Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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 如何在Django admin中使用ContentTypes在两个应用程序之间的ForeignKey上使用filter_horizontal?_Python_Django_Django Models_Django Admin - Fatal编程技术网

Python 如何在Django admin中使用ContentTypes在两个应用程序之间的ForeignKey上使用filter_horizontal?

Python 如何在Django admin中使用ContentTypes在两个应用程序之间的ForeignKey上使用filter_horizontal?,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,假设我有一个名为Pantry的应用程序,可以连接到我可能附带的任何其他应用程序。为了保持应用程序的解耦,通过模型LinkedItem使用通用关系,该模型将配料模型连接到餐具室外的应用程序 我希望通用关系另一端的内容,比如一个名为Bakery的应用程序,能够对配料进行过滤 餐具室 models.py 面包房 管理员 有什么想法吗?我想这就是它的用途,所以你需要在你的蛋糕模型中添加一个,并在你的CakeAdmin中使用它的名称 但是,如果不想做大量的工作,就需要使用内联线。一般关系不起作用,因为过滤

假设我有一个名为Pantry的应用程序,可以连接到我可能附带的任何其他应用程序。为了保持应用程序的解耦,通过模型LinkedItem使用通用关系,该模型将配料模型连接到餐具室外的应用程序

我希望通用关系另一端的内容,比如一个名为Bakery的应用程序,能够对配料进行过滤

餐具室 models.py

面包房 管理员

有什么想法吗?

我想这就是它的用途,所以你需要在你的
蛋糕
模型中添加一个,并在你的CakeAdmin中使用它的名称


但是,如果不想做大量的工作,就需要使用内联线。

一般关系不起作用,因为过滤器需要M2M字段。你说的变通方法是什么?你一开始就没有M2M字段。如果您真的需要filter_horizontal widget,请编写widget定制和自定义
CakeAdmin.save_model
。或者使用框架并使用。
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import fields

class Ingredient(models.Model):
   '''
   Model containing all the ingredients, their slugs, and their descriptions
   '''
   name = models.CharField(unique=True, max_length=100)
   slug = models.SlugField(unique=True, max_length=100)
   description = models.CharField(max_length=300)

   # method to return the name of the db entry
   def __str__(self):
      return self.name

class LinkedItem(models.Model):
   '''
   Model that links ingredients to various other content models
   '''
   content_type = models.ForeignKey(ContentType)
   object_id = models.PositiveIntegerField()
   content_object = fields.GenericForeignKey('content_type', 'object_id')

   ingredient = models.ForeignKey(Ingredient)

   # method to return the name of the db entry
   def __str__(self):
      return self.ingredient.name

   # defines options for the model itself
   class Meta:
     unique_together = (('content_type','object_id'))    # prevents duplicates
from django.contrib import admin
from bakery.models import Cake

class CakeAdmin(admin.ModelAdmin):
   filter_horizontal = ('') # what to put here so ingredients show up?