首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django教程:“polls.Choice”没有指向“polls.ForeignKey”的ForeignKey。

Django教程:“polls.Choice”没有指向“polls.ForeignKey”的ForeignKey。
EN

Stack Overflow用户
提问于 2015-08-21 15:36:26
回答 1查看 766关注 0票数 0

在django教程的第二部分编写im代码时,我遇到了这个错误,我不知道为什么,我有和网站相同的代码。

Django 1.8.3

代码语言:javascript
复制
ERRORS:
<class 'polls.admin.ChoiceInline'>: (admin.E202) 'polls.Choice' has no ForeignKey to 'polls.Choice'.

System check identified 1 issue (0 silenced).

我的models.py

代码语言:javascript
复制
    import datetime

from django.db import models
from django.utils import timezone

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

我的admin.py

代码语言:javascript
复制
from django.contrib import admin

from .models import Choice, Question

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,{'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

admin.site.register(Choice, ChoiceInline)
admin.site.register(Question, QuestionAdmin)

我真的会精确的帮助,我真的不知道是什么问题,并想完成本教程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 15:42:37

ChoiceInline已经包含在您的QuestionAdmin中,方法是

inlines = [ChoiceInline]

这意味着当您编辑一个问题时,您将能够同时添加、编辑和删除该问题的选项。

因为这一行,您得到了错误:

代码语言:javascript
复制
admin.site.register(Choice, ChoiceInline)

这是无效的,因为您不能向Inline注册模型。您只能向ModelAdmin类注册模型。要停止错误,只需从代码中删除这一行。

如果您想自己编辑选择,您需要定义一个ChoiceAdmin类并注册它。

代码语言:javascript
复制
admin.site.register(Choice, ChoiceAdmin)

或者,如果您不需要任何定制,您实际上不需要一个模型管理员。

代码语言:javascript
复制
admin.site.register(Choice)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32144288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档