gpt4 book ai didi

python - Django:使用模型继承时如何检查对象类别?

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:39 25 4
gpt4 key购买 nike

这是我的 models.py 应用程序的想法是让不同的对象(餐厅、服务等)具有不同的功能(您可以检查每个模型)。但是当我想获取所有对象 Object.objects.all() 时,我不知道每个对象属于哪个类别。

模型.py:

from django.db import models
from users.models import ProfileUser
from django.utils import timezone

# Create your models here.

class City(models.Model):
name = models.CharField(max_length=20)

def __str__(self):
return f"{self.name}"

class Object(models.Model):
author = models.ForeignKey(ProfileUser, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
city = models.ForeignKey(City, on_delete=models.CASCADE)
address = models.CharField(max_length=300)
phone = models.CharField(max_length=20, default='')
email = models.CharField(max_length=100, default='')
site = models.CharField(max_length=100, default='')
facebook = models.CharField(max_length=100, default='')
instagram = models.CharField(max_length=100, default='')
content = models.TextField()
rating = models.IntegerField(default=10)
created_date = models.DateTimeField(default=timezone.now)
approved_object = models.BooleanField(default=False)
admin_seen = models.BooleanField(default=False)

def __str__(self):
return f"{self.title}"


class Restaurant(Object):
seats = models.IntegerField()
bulgarian_kitchen = models.BooleanField(default=False)
italian_kitchen = models.BooleanField(default=False)
french_kitchen = models.BooleanField(default=False)
is_garden = models.BooleanField(default=False)
is_playground = models.BooleanField(default=False)


class SportFitness(Object):
is_fitness_trainer = models.BooleanField(default=False)


class CarService(Object):
is_parts_clients = models.BooleanField(default=False)


class BeautySalon(Object):
is_hair_salon = models.BooleanField(default=False)
is_laser_epilation = models.BooleanField(default=False)


class FastFood(Object):
is_pizza = models.BooleanField(default=False)
is_duner = models.BooleanField(default=False)
is_seats = models.BooleanField(default=False)


class CarWash(Object):
is_external_cleaning = models.BooleanField(default=False)
is_internal_cleaning = models.BooleanField(default=False)
is_engine_cleaning = models.BooleanField(default=False)


class Fun(Object):
is_working_weekend = models.BooleanField(default=False)
is_kids_suitable = models.BooleanField(default=False)


class Other(Object):
is_working_weekend = models.BooleanField(default=False)


class Comment(models.Model):
object = models.ForeignKey(Object, on_delete=models.CASCADE, related_name='comments')
author = models.ForeignKey(ProfileUser, on_delete=models.CASCADE)
content = models.TextField()
rating = models.TextField()
created_date = models.DateTimeField(default=timezone.now)

def __str__(self):
return f"{self.content}"

最佳答案

您无法使用对象模型获取类别。为特定目的创建对象类:它消除了声明类的某些特征的需要

在这里您可以使用 select_related 或 prefect_related 来获得所需的输出。

为了满足您的要求,您可以使用django-polymorphic 获取更多详细信息,您可以refer文档。

关于python - Django:使用模型继承时如何检查对象类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58835161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com