Python Django中的默认foreignkey值
我知道这已经被问了无数次了,但是没有一个解决方案适合我的需要。我正在尝试从另一个应用程序中的外键动态设置外键的默认值。 以下是模型,包括获取默认值的函数。这段代码没有错误,它确实在下拉列表中输入了一个值(没有“default=…”,模板中的下拉列表只显示“--”作为初始/默认值),它只是一个错误的值。它使用“RevisionSettings”表中的第一个条目,不会更改 代码 models.py(计算应用程序) models.py(设置应用程序)Python Django中的默认foreignkey值,python,django,Python,Django,我知道这已经被问了无数次了,但是没有一个解决方案适合我的需要。我正在尝试从另一个应用程序中的外键动态设置外键的默认值。 以下是模型,包括获取默认值的函数。这段代码没有错误,它确实在下拉列表中输入了一个值(没有“default=…”,模板中的下拉列表只显示“--”作为初始/默认值),它只是一个错误的值。它使用“RevisionSettings”表中的第一个条目,不会更改 代码 models.py(计算应用程序) models.py(设置应用程序) 找到了解决办法。它所需要的只是在这个网站上找到的一
找到了解决办法。它所需要的只是在这个网站上找到的一个小调整: 作用
希望这能帮助其他有类似问题的人,如果有人发现此代码有任何问题,请随时纠正我。你是说
将选择限制为?您正试图根据默认值分配值queryset
(一个iterable)我希望所有选项都可用,我只希望默认值/初始值与'RevisionDefaultType'id=1中的当前条目相匹配。因此,您应该恢复正确的第一个元素,而不是整个queryset值。我在函数中使用“print(queryset)”进行了测试,并检查了shell中打印的内容。它按预期显示了foreignkey id。它确实产生了一个有趣的结果,它显示了3次结果,就像在一个循环中一样。
from django.db import models
from settings.models import RevisionDefaultType, RevisionSettings
def get_default_rev():
queryset = RevisionDefaultType.objects.values_list('defaultrevisiontype', flat = True)
return queryset
class PstCalc(models.Model):
revision_type = models.ForeignKey(RevisionSettings, default = get_default_rev)
from django.db import models
class RevisionSettings(models.Model):
global_revision_type = models.CharField(max_length = 5, unique=True, blank = True)
global_revision_description = models.CharField(max_length = 300, unique=True, blank = True)
class Meta:
ordering = ["global_revision_type"]
def __unicode__(self): # Python 3: def __str__(self):
return self.global_revision_type
class RevisionDefaultType(models.Model):
defaultrevisiontype = models.ForeignKey(RevisionSettings)
class Meta:
ordering = ["defaultrevisiontype"]
def __unicode__(self): # Python 3: def __str__(self):
return unicode(self.defaultrevisiontype)
def get_default_rev():
queryset = RevisionDefaultType.objects.values_list('defaultrevisiontype', flat = True)
for query in queryset:
return query