我正在嘗試更新我擁有的視圖,該視圖根據當前登錄的用戶從我的 pets 表中回傳我的所有專案。我在Pet多對多領域petowners。
該PetOwner模型如下...
class PetOwner(models.Model):
"""Model representing a pet owner."""
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=50, help_text="Enter owner's first name")
last_name = models.CharField(max_length=50, help_text="Enter owner's last name")
email = models.EmailField(
max_length=50, blank=True, null=True, unique=True, help_text="Enter owner's email"
)
phone_number = models.CharField(
max_length=15, blank=True, null=True, unique=True, help_text="Enter owner's phone number"
)
address = models.ForeignKey(
"Address", on_delete=models.SET_NULL, null=True, blank=True
)
該Pet模型如下...
class Pet(models.Model):
"""Model representing a pet."""
first_name = models.CharField(max_length=50, help_text="Enter pet's first name")
last_name = models.CharField(max_length=50, help_text="Enter pet's last name")
breeds = models.ManyToManyField("Breed", help_text="Select a breed for this pet")
weight = models.DecimalField(
max_digits=5, decimal_places=2, help_text="Enter pet's weight"
)
date_of_birth = models.DateField(null=True, blank=True)
date_of_death = models.DateField("Died", null=True, blank=True)
owners = models.ManyToManyField(PetOwner, help_text="Select an owner for this pet")
address = models.ForeignKey(
"Address", on_delete=models.SET_NULL, null=True, blank=True
)
我正在使用UserDjango 已經提供給我們的身份驗證(注冊和登錄)。PetOwner當用戶創建他們的帳戶時會創建A ,以及他們的名字和姓氏。在PetOwner已只有email,phone_number和address獨特領域,但不是必需的。因此,唯一性的保證來自于username來自 Django 的User模型。
我不想回傳資料庫中的所有寵物,而是只想回傳當前登錄用戶的寵物。類似于以下內容...
Pet.objects.filter(owners.contain(request.user))
也許通過使用用戶名?我不知道如何撰寫此查詢。
uj5u.com熱心網友回復:
首先設定related_nameofowners欄位:
class Pet(models.Model):
"""Model representing a pet."""
first_name = models.CharField(max_length=50, help_text="Enter pet's first name")
last_name = models.CharField(max_length=50, help_text="Enter pet's last name")
breeds = models.ManyToManyField("Breed", help_text="Select a breed for this pet")
weight = models.DecimalField(
max_digits=5, decimal_places=2, help_text="Enter pet's weight"
)
date_of_birth = models.DateField(null=True, blank=True)
date_of_death = models.DateField("Died", null=True, blank=True)
owners = models.ManyToManyField(PetOwner, help_text="Select an owner for this pet", related_name='pets') # <- Here
address = models.ForeignKey(
"Address", on_delete=models.SET_NULL, null=True, blank=True
)
然后您可以進行此查詢以獲取用戶的寵物:
target_user = User.objects.get(id=1) # This is only an example
pet_owner = PetOwner.objects.get(user=target_user)
pets = pet_owner.pets.all()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355218.html
標籤:姜戈 模型 django-queryset
上一篇:Django-一對多關系
