Python 允许Django管理表单中的外键字段

Python 允许Django管理表单中的外键字段,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,现在我有两个模型:库存和商品 一个项目可以有多个库存交易(你可以把它们本质上看作是批次),但一个库存交易只能有一个项目,所以是一对多关系,对吗?无论如何,我使用的外键字段如下: 型号.py class Item(models.Model): name = models.CharField(max_length=40) description = models.TextField() brand = models.CharF

现在我有两个模型:库存和商品

一个项目可以有多个库存交易(你可以把它们本质上看作是批次),但一个库存交易只能有一个项目,所以是一对多关系,对吗?无论如何,我使用的外键字段如下:

型号.py

class Item(models.Model):
    name            = models.CharField(max_length=40)
    description     = models.TextField()
    brand           = models.CharField(max_length=40)

class Inventory(models.Model):
    item = models.ForeignKey(Item, related_name="inventory")
现在的工作流程是,我在ItemAdmin中创建一个项目,但是我没有从那里添加库存(批次)的权限。所以,我必须退出并转到InventoryAdmin添加实际库存。这里的好处是,在保存InventoryAdmin表单之前,允许我在InventoryAdmin中使用下拉列表将我正在创建的库存链接到我第一次创建的项目

然而,我希望,当我第一次创建该项目时,有一种方法可以将其链接到库存事务,从而使工作流更加精简。我担心由于外键关系,我无法将库存事务添加到我尚未创建的项目中。如果有解决办法,我想知道,如果可能的话,我想找出一种方法来防止(或在)授权用户在添加项目后编辑该项目

下面是一种方法,在我创建一个库存交易并将其链接到一个项目后,如果我返回并尝试编辑该项目,它将不允许我,但我想禁用使用表单中的铅笔图标对其进行编辑的功能

这是我的admin.py,谢谢:

class ItemAdmin(admin.ModelAdmin):
    list_display = ('name', 'description', 'brand')


class InventoryForm(forms.ModelForm):
    class Meta:
        model = Inventory
        fields = '__all__'

class InventoryAdmin(admin.ModelAdmin):
    form = InventoryForm
    readonly_fields = ('created_at', 'updated_at')
    list_display = ('id', 'item', 'active',  'description')

    def get_readonly_fields(self, request, obj=None):
        if obj:
            return ['item']
        else:
            return []

使用双下划线遍历外键树

list_display = ('id', 'item', 'item__description', 'item__brand',  'active',  'description')

我试过了,但得到了以下结果::(admin.E108)“list_display[2]”的值指的是“item_ubrand”,它不是可调用的、“InventoryAdmin”属性,也不是“ecommerce_app.Inventory”上的属性或方法。我做错了什么?谢谢。我想这与注册有关。请显示使admin.site.registeradmin.site.register(Item,ItemAdmin)admin.site.register(Inventory,InventoryAdmin)替换为model=InventoryOkay的form=InventoryForm的代码。请尝试注销并重新注册