Python Django中的默认foreignkey值

Python Django中的默认foreignkey值,python,django,Python,Django,我知道这已经被问了无数次了,但是没有一个解决方案适合我的需要。我正在尝试从另一个应用程序中的外键动态设置外键的默认值。 以下是模型,包括获取默认值的函数。这段代码没有错误,它确实在下拉列表中输入了一个值(没有“default=…”,模板中的下拉列表只显示“--”作为初始/默认值),它只是一个错误的值。它使用“RevisionSettings”表中的第一个条目,不会更改 代码 models.py(计算应用程序) models.py(设置应用程序) 找到了解决办法。它所需要的只是在这个网站上找到的一

我知道这已经被问了无数次了,但是没有一个解决方案适合我的需要。我正在尝试从另一个应用程序中的外键动态设置外键的默认值。 以下是模型,包括获取默认值的函数。这段代码没有错误,它确实在下拉列表中输入了一个值(没有“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