如何同时选择单个对象的多个相对对象Django ForeignKey

hs1rzwqc  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(96)

所以我有两个类,一个是Book,另一个是Category,一开始我在Book中添加了外键,指向Category。

class Category(models.Model):
    class Meta:
        verbose_name_plural = "Categories"

    category = models.CharField(max_length=20)

    def __str__(self):
        return self.category

class Book(models.Model):
    book_title = models.CharField(max_length=20)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    def __str__(self):
        return self.book_title

字符串
它的工作很好,我能够选择一个类别,从一个选定的书内的管理面板
但现在我想从类别部分选择书籍,这样我就可以选择所有属于该类别的书籍。为此我用下面的方法修改了代码

class Book(models.Model):
    book_title = models.CharField(max_length=20)

    def __str__(self):
        return self.book_title

class Category(models.Model):
    class Meta:
        verbose_name_plural = "Categories"

    category = models.CharField(max_length=20)
    book = models.ForeignKey(Book, on_delete=models.PROTECT)

    def __str__(self):
        return self.category


上面的代码返回大量错误。
假设我在Book表中有四本书,在Category表中有一个类别。所以现在我想通过打开一个类别来将所有这些书与类别表中类别关联起来。现在发生的是,我必须打开每一本书条目,并与它的类别相关联。但我想要一个下拉菜单内的类别的管理面板,我可以选择所有的书籍类别。它也将是一对多的,因为单一的书涉及到一个单一的类别,但一个类别可以有许多书。有可能吗?

2eafrhcq

2eafrhcq1#

如果你想编辑一个类别中的多本书,你可以保留第一段代码,并从admin.py添加内联到类别中
第一个月

class Category(models.Model):
    class Meta:
        verbose_name_plural = "Categories"

    category = models.CharField(max_length=20)

    def __str__(self):
        return self.category

class Book(models.Model):
    book_title = models.CharField(max_length=20)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    def __str__(self):
        return self.book_title

字符串
admin.py

from django.contrib import admin
from .models import *

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    pass

class BookInline(admin.TabularInline):
    model = Book


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    inlines = [BookInline]

相关问题