以下は私のmodels.py
です。問題は、管理パネルUser
で、モデルの列が値ではなく値をIngredience
指していることです。Ingredience Category
User
Ingredience
モデルには2つの外部キーがあります。これが問題かどうかはわかりません。
管理パネルのスクリーンショット:
Models.py:
from django.db import models
from django.contrib.auth.models import User
class IngredienceCategory(models.Model):
name = models.CharField(max_length=30)
user = models.ForeignKey(User, null=True, blank=True)
class Meta:
verbose_name_plural = "Ingredience Categories"
def __unicode__(self):
return self.name
class Ingredience(models.Model):
name = models.CharField(max_length=30)
category = models.ForeignKey(IngredienceCategory, null=True, blank=True)
user = models.ForeignKey(User, null=True, blank=True)
class Meta:
verbose_name_plural = "Ingredients"
def __unicode__(self):
return self.name
class Food(models.Model):
name = models.CharField(max_length=30)
ingredients = models.ManyToManyField(Ingredience)
html_id = models.CharField(max_length=30, null=True, blank=True)
user = models.ForeignKey(User, null=True, blank=True)
class Meta:
verbose_name_plural = "Foods"
def __unicode__(self):
return self.name
ここでの問題は何ですか?この問題が発生する前に私が行った手順は次のとおりです。
- 3つのモデルすべてに列を追加
user
し、南の移行を実行しました - その後、3つのテーブルすべてのユーザー列に手動で値を挿入しました
- モデル
IngredienceCategory
とFood
正常に動作する(つまり、User
ドロップダウンリストにユーザーのリストを表示する) - SQLは次のとおりです:http://pastebin.com/3mHpXA3F
編集: 追加するもの(この問題の解決に役立つ可能性があります):管理パネルの成分モデルの[ユーザー]列の横にあるプラス記号(+)をクリックすると、新しいユーザーを追加するためのポップアップフォームが表示されます。表示されますが、これは正しいです。
編集2: admin.pyファイルの関連部分:
class IngredienceAdmin(admin.ModelAdmin):
search_fields = ('name',)
list_filter = ('category',)
ordering = ('name',)
# def formfield_for_foreignkey(self, db_field, request, **kwargs):
# #if db_field.name == 'ingrediencecategory':
# kwargs['queryset'] = IngredienceCategory.objects.order_by('name')
# return super(IngredienceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'ingrediencecategory':
kwargs['queryset'] = IngredienceCategory.objects.order_by('name')
return super(IngredienceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
if db_field.name == 'user':
kwargs['queryset'] = User.objects.order_by('name')
return super(IngredienceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)