Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自db的ModelChoiceField初始值_Python_Django - Fatal编程技术网

Python 来自db的ModelChoiceField初始值

Python 来自db的ModelChoiceField初始值,python,django,Python,Django,我试图找出如何设置ModelChoiceField的初始值,我找到了这个问题的许多答案,但我真的不明白。我知道我可以在admin.py中调用表单时设置“initial”,但是当提到一个模型实例时,我就迷路了 这是我的模特 class Articles(models.Model): headline = models.CharField('Rubrik', max_length=200) category = models.CharField('Kategori', max_len

我试图找出如何设置ModelChoiceField的初始值,我找到了这个问题的许多答案,但我真的不明白。我知道我可以在admin.py中调用表单时设置“initial”,但是当提到一个模型实例时,我就迷路了

这是我的模特

class Articles(models.Model):
    headline = models.CharField('Rubrik', max_length=200)
    category = models.CharField('Kategori', max_length=200, blank=True)
    extract = models.TextField('Utdrag')
    image = ImageField('Bild', upload_to='articles', blank=True, default="")
    text = RichTextUploadingField('Text', blank=True, default="")
    added = models.DateTimeField('Publicerad', default=timezone.now,     blank=True)
    updated = models.DateTimeField('Uppdaterad',auto_now=True)
    frontpage = models.BooleanField('Visa på startsida', default=True)
    active = models.BooleanField('Aktiv', default=False)

    def save(self, *args, **kwargs):
        if self.added is None:
            self.added = timezone.now
        super(Articles, self).save(*args, **kwargs)

    def __unicode__(self):
        return '%s' % (self.headline)

    class Meta:
        verbose_name = "artikel"
        verbose_name_plural = "Artiklar"
这是我的表格

class ArticleForm(forms.ModelForm):
category = forms.ModelChoiceField(queryset=Menu.objects.order_by('name').filter(category=True))
这是我的管理员

class ArticlesAdmin(admin.ModelAdmin):
form = ArticleForm
list_display = ('headline','category', 'extract', 'image', 'added', 'updated', 'frontpage', 'active')
admin.site.register(Articles, ArticlesAdmin)
当我在管理部分编辑文章时,我希望类别的存储值是ModelChoiceField的初始值。你明白我的意思吗

在admin.py中,应该有如下内容:

form = ArticleForm(initial = {'category':  instance.something})
*编辑:我按照建议添加了ForeignKey

category = models.ForeignKey(Menu)
admin.py如下所示:

class ArticlesAdmin(admin.ModelAdmin):
form = ArticleForm
list_display = ('headline','category', 'extract', 'image', 'added', 'updated', 'frontpage', 'active')
现在它的工作如预期

此代码应该可以工作:

form = ArticleForm(initial = {'category':  pk})
pk
是存储值,pk=primary key

此代码应能工作:

form = ArticleForm(initial = {'category':  pk})

pk
是存储值,pk=primary key

为什么
category
不是外键呢?主要是因为我还不太懂外键的用法。这能解决我的问题吗?那为什么
类别
不是外键呢?主要是因为我还不太了解外键的用法。这能解决我的问题吗?我不明白你的意思?NameError:名称“pk”未定义?这只是一个示例,
pk
是一个必须包含存储值的变量哦,是的,通过执行
category
外键可以解决您的问题。我理解我应该使用form=ArticleForm(initial={'category':stored\u value})但是我不明白如何访问存储值。我不明白你的意思?名称错误:名称“pk”未定义?这只是一个示例,
pk
是一个必须包含存储值的变量哦,是的,通过执行
category
外键可以解决您的问题。我知道我应该使用form=ArticleForm(initial={'category':stored_value}),但我不知道如何访问存储值。