我有一个名为Persona的Django模型:
class Persona(models.model):
name=models.CharField(max_length=100,primary_key=True)
pages_visited = models.ManyToManyField(Page)
items_searched = models.ManyToManyField(ItemsSearched)
visits = models.IntegerField(null=True,blank=True)
connect = models.CharField(max_length=True,null=True,blank=True)
image = models.ForeignKey('Image',on_delete=models.CASCADE)
def __str__(self):
return self.name
我有一个用于此模型的对象:
<QuerySet [<Persona: aman>]>
现在,当我尝试获取该对象的所有字段的值时,我可以看到所有字段及其对应的值,但ManyToManyField类型的字段除外。
执行此命令可获得以下结果:Persona.objects.filter(name ='aman')。values()
<QuerySet [{'visits': None, 'image_id': 3, 'name': 'aman', 'connect': 'call'}]>
虽然我登录管理员时可以看到它们,但我看不到“ items_searched”和“ pages_visited”字段及其对应的值。
这些是向我展示死刑的图像:
答案 0 :(得分:0)
要访问django中提交的m2m,请使用 .all()关键字,参考this
p1 = Persona.objects.filter(name='aman')
p1_m2m = p1.pages_visited.all()
这将提供您想要的结果
答案 1 :(得分:0)
我相信您正在寻找的是Inlines
。
在您的管理文件中,添加
from .models import Page # Edit this import according to your project structure
class PagesVisitedInline(admin.TabularInline):
model = Page
class PersonaAdmin(admin.ModelAdmin):
[...] # admin code goes here
inlines = [PagesVisitedInline, ]
如果愿意,您也可以使用StackedInline
,请阅读更多here。