每次我在Django的Admin部分输入一个新的播放器时,我都会收到一条错误消息,上面写着"此字段是必需的".
有没有办法在不创建自定义表单的情况下使字段不需要?我可以在models.py或admin.py中执行此操作吗?
这是我在models.py中看到的类.
class PlayerStat(models.Model):
player = models.ForeignKey(Player)
rushing_attempts = models.CharField(
max_length = 100,
verbose_name = "Rushing Attempts"
)
rushing_yards = models.CharField(
max_length = 100,
verbose_name = "Rushing Yards"
)
rushing_touchdowns = models.CharField(
max_length = 100,
verbose_name = "Rushing Touchdowns"
)
passing_attempts = models.CharField(
max_length = 100,
verbose_name = "Passing Attempts"
)
Run Code Online (Sandbox Code Playgroud)
谢谢
只是想知道是否有一种简单的方法来添加复制管理界面中现有列表的功能?
在数据输入中,我们遇到了许多项目与另一项共享通用数据的情况,为了节省时间,快速复制现有列表并仅更改已更改的数据将非常好.使用更好的模型结构将是减少数据重复的一种方法,但可能存在需要在将来单独更改重复数据的情况.
我已设法禁用"删除已选中"操作.简单.
但是用户仍然可以点击某个项目,然后底部有红色的删除链接.
我想改变admin django中的某些css,比如base.css.在django库中直接更改会更好吗?如何以最佳方式覆盖它?
我刚才创建了一个小应用程序.我创建了admin.py并用于admin.site.register(MenuEntry)将该类添加到管理控制台.它显示该类的项目很好.然后我开始研究另一个应用程序并像以前一样创建所有内容 但现在它说:
你没有权限编辑任何东西.
我比较了来自这个应用程序和来自这个应用程序的文件,它们看起来非常相似,所以我找不到差异,我无法意识到现在要做什么才能使它工作.
我的一个模型有一个删除标志,用于全局隐藏对象:
class NondeletedManager(models.Manager):
"""Returns only objects which haven't been deleted"""
def get_query_set(self):
return super(NondeletedManager, self).get_query_set().exclude(deleted=True)
class Conversation(BaseModel):
...
deleted = models.BooleanField(default=False)
objects = NondeletedManager()
all_conversations = models.Manager() # includes deleted conversations
Run Code Online (Sandbox Code Playgroud)
如何覆盖Django管理模块使用的默认查询集以包含已删除的对话?
我正在为一个satchmo应用程序组建管理员.Satchmo使用OneToOne关系来扩展基本Product模型,我想在一个页面上编辑它.
OneToOne关系可以作为内联吗?如果没有,最好的方法是将几个字段添加到我的管理员的给定页面,最终将保存到OneToOne关系中?
例如:
class Product(models.Model):
name = models.CharField(max_length=100)
...
class MyProduct(models.Model):
product = models.OneToOne(Product)
...
Run Code Online (Sandbox Code Playgroud)
我为我的管理员尝试了这个但它不起作用,似乎期待一个外键:
class ProductInline(admin.StackedInline):
model = Product
fields = ('name',)
class MyProductAdmin(admin.ModelAdmin):
inlines = (AlbumProductInline,)
admin.site.register(MyProduct, MyProductAdmin)
Run Code Online (Sandbox Code Playgroud)
这引发了这个错误: <class 'satchmo.product.models.Product'> has no ForeignKey to <class 'my_app.models.MyProduct'>
这是自定义表单的唯一方法吗?
编辑:刚尝试以下代码直接添加字段...也不起作用:
class AlbumAdmin(admin.ModelAdmin):
fields = ('product__name',)
Run Code Online (Sandbox Code Playgroud) 我无法覆盖ModelForm保存方法.这是我收到的错误:
Exception Type: TypeError
Exception Value: save() got an unexpected keyword argument 'commit'
Run Code Online (Sandbox Code Playgroud)
我的目的是让表单为3个字段提交许多值,然后为这些字段的每个组合创建一个对象,并保存每个对象.在正确的方向上有用的推动将是王牌.
models.pyclass CallResultType(models.Model):
id = models.AutoField(db_column='icontact_result_code_type_id', primary_key=True)
callResult = models.ForeignKey('CallResult', db_column='icontact_result_code_id')
campaign = models.ForeignKey('Campaign', db_column='icampaign_id')
callType = models.ForeignKey('CallType', db_column='icall_type_id')
agent = models.BooleanField(db_column='bagent', default=True)
teamLeader = models.BooleanField(db_column='bTeamLeader', default=True)
active = models.BooleanField(db_column='bactive', default=True)
Run Code Online (Sandbox Code Playgroud)
forms.pyfrom django.forms import ModelForm, ModelMultipleChoiceField
from callresults.models import *
class CallResultTypeForm(ModelForm):
callResult = ModelMultipleChoiceField(queryset=CallResult.objects.all())
campaign = ModelMultipleChoiceField(queryset=Campaign.objects.all())
callType = ModelMultipleChoiceField(queryset=CallType.objects.all())
def save(self, force_insert=False, force_update=False):
for cr in self.callResult:
for c …Run Code Online (Sandbox Code Playgroud) 有没有办法告诉django具有contenttypes GenericForeignKey的模型只能指向预定义列表中的模型?例如,我有4个模型:A,B,C,D和一个包含GenericForeignKey的模型X. 我可以告诉X,GenericForeignKey只允许A和B吗?
django django-models django-forms django-admin django-contenttypes
我的模型中有一个DateTimeField字段.我想将它显示为Django管理站点中的复选框小部件.为此,我创建了一个自定义表单小部件.但是,我不知道如何仅将此自定义窗口小部件用于此字段.
在Django文档解释了如何使用自定义窗口小部件的所有特定类型的字段:
class StopAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {'widget': ApproveStopWidget }
}
Run Code Online (Sandbox Code Playgroud)
但这并不够精细.我想只为一个字段更改它.