以下のモデルからデータを取得したいとします。 ModelItemクラスは、return文の4つの値すべてを返す必要があります。 works.I以下views.pyコードでQuerySetをJSONとして返します。 values()関数を使用すると値が失われる
class ModelItem(models.Model):
"""Stores item names for user"""
item_owner = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
item_name = models.TextField(max_length=100, null=True)
def __unicode__(self):
return "{0}, {1}, {2}, {3}".format(
self.pk,
self.item_owner.pk,
self.item_owner.username,
self.item_name,
)
クラスのModelItem」は
user_id = 2
get_data = ModelItem.objects.filter(item_owner=user_id)
context = {'user_items': get_data}
return render(request, 'itemrequests.html', context)
結果、この(アイテムのPK、item_ownerのPK、item_ownerのユーザー名を、返却されたすべての値を取得ITEM_NAME):
<QuerySet [<ModelItem: 1, 2, app_user, 2h-Axe>, <ModelItem: 2, 2, app_user, Ball of fire>]>
しかし、JSONのデータを返すようにしよう(したがって.values(使用した)をする場合)
user_id = 2
get_data = ModelItem.objects.filter(item_owner=user_id).values()
return JsonResponse({'results': list(get_data)})
結果(ユーザ名はが欠落している):
{"results": [{"item_name": "2h-Axe", "item_owner_id": 2, "id": 1}, {"item_name": "Ball of fire", "item_owner_id": 2, "id": 2}]}
私はこれを引き起こしているものを見つけることができません。それはモデルや他の何かからデータを返す方法ですか?
class SiteUser(AbstractUser):
def natural_key(self):
return (self.username, self.pk)
を:モデルからカスタマイズされたデータを返すために、私はmodels.pyのためにこのクラスを追加することにより、カスタムのユーザーモデルにDjangosデフォルトのユーザー・モデルを使用してから切り替えるので
は
[OK]を解決しよう私の新しいカスタムユーザーモデルを使用して起動するためのDjangoのために
私もsettings.pyに次のようにコメントを追加しました:私は
AUTH_USER_MODEL = 'homepage.SiteUser'
この道をデフォルトのUser-modelをベースとして使用しています。このクラスでは、ユーザのユーザ名と主キーを返すnatural_key()メソッドを追加しました。私は次の使用私のviews.pyで
models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
:
user_id = 1
get_data = ModelItem.objects.select_related('item_owner').filter(item_owner=user_id)
ser_data = serializers.serialize("json", get_data, use_natural_foreign_keys=True)
return HttpResponse(ser_data, content_type="application/json")
結果:
[{"model": "homepage.modelitem", "pk": 1, "fields": {"item_owner": ["Murzum", 1], "item_name": "2h-Axe"}}, {"model": "homepage.modelitem", "pk": 2, "fields": {"item_owner": ["Murzum", 1], "item_name": "Ball Of fire"}}]
私は、ユーザーへの外部キーを指して、他のモデルで
はI以下の変更を行いました
ここで、item_ownerのユーザー名とパスワードの両方を取得しました。 はまた、あなたがオブジェクトを印刷する場合についてdjango Manager interface