【问题标题】:Require multiple entries for "Item", Django Admin“项目”需要多个条目,Django Admin
【发布时间】:2020-03-05 19:55:22
【问题描述】:

我想在一个“session_title”下为“item”输入多个条目 - 我想我知道我需要一个 ManyToOne 关系(使用 ForeignKey 设置)但 mysite/admin 没有显示多个可用条目?我正在使用 DjangoAdmin 来管理我的应用程序。

编辑/添加:我知道我缺少一个步骤。我希望有人送我去那里。

class Item(models.Model):
    item_name = models.TextField(unique=True)

    class Meta:
        managed = True
        db_table = 'item'

    def __str__(self):
        return self.item_name

class SessionLog(models.Model):
    date = models.DateField()
    session_title = models.TextField(blank=True, null=True)
    campaign = models.OneToOneField(Campaign, models.DO_NOTHING, default="1")
    chapter = models.OneToOneField(Chapter, models.DO_NOTHING, default="1")
    scene = models.OneToOneField(Scene, models.DO_NOTHING, default="1")
    character = models.OneToOneField(Character, models.DO_NOTHING, default="1")
    location = models.OneToOneField(Location, models.DO_NOTHING, blank=True, null=True)
    npc = models.OneToOneField(Npc, models.DO_NOTHING, blank=True, null=True)
    monster = models.OneToOneField(Monster, models.DO_NOTHING, blank=True, null=True)
    item = models.ForeignKey(Item, models.DO_NOTHING, blank=True, null=True)
    loot_pp = models.IntegerField(blank=True, null=True)
    loot_gp = models.IntegerField(blank=True, null=True)
    loot_ep = models.IntegerField(blank=True, null=True)
    loot_sp = models.IntegerField(blank=True, null=True)
    loot_cp = models.IntegerField(blank=True, null=True)
    session_xp = models.IntegerField(blank=True, null=True)
    session_strongstart = models.TextField(blank=True, null=True)
    session_secrets = models.TextField(blank=True, null=True)
    session_clues = models.TextField(blank=True, null=True)
    session_notes = models.TextField(blank=True, null=True)

    class Meta:
        managed = True
        db_table = 'session_log'

    def __str__(self):
        return self.session_title

有人能指出我正确的方向吗?提前谢谢你。

【问题讨论】:

    标签: mysql django django-models


    【解决方案1】:

    是的,你在正确的轨道上。

    改变

    item = models.ForeignKey(Item, models.DO_NOTHING, blank=True, null=True)
    

    items = models.ManyToManyField(Item, on_delete=models.DO_NOTHING)
    

    在您的管理员中,declare an Inline class:

    class ItemInline(admin.TabularInline):
        pass
    
    class SessionLogAdmin(admin.ModelAdmin):
        inlines = [ItemInline]
    

    【讨论】:

    • 你。是。惊人的。 !!!!!!尝试了几次(models.py 不喜欢在更改为 ManyToManyField 后使用 on_delete=models.DO_NOTHING)并弄清楚将您所说的内容添加到 admin.py 的位置。但它有效!谢谢!我能再问你一个问题吗?!
    • 很高兴我能帮上忙!当然可以,不过可能需要一段时间才能回复。
    • 一直在阅读此内容,但无法确定要编辑哪些文件才能使其正常工作。我正在使用守护模式。 code.google.com/archive/p/modwsgi/wikis/…
    • 在 2020 年,使用 Nginx 和 Gunicorn 来运行您的应用程序会让您更开心。
    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多