如何使用ORM对一到许多关系表执行查询?

发布于 2025-01-27 19:20:36 字数 2199 浏览 2 评论 0原文

请求中的数据

city_name = 'Nashik'
tags = ['tag 1','tag 2', 'tag 3']

ws = WorkSamplesModel.objects.filter(business_account__serviceareasmodel__city_name=city_name,
        business_account__professiontagsmodel__tag_name__in=tags_list,
        is_business_card_image=True).distinct()

现在尝试business_title,business_description,status,status,note从businessAccountmodel和 work_sample_image,work_sample_description,is_business_card_image来自WorksamPlemodel和 user_name,profile_pic来自usermodel

如何为其创建序列化器?

模型 我想使用city_name和标签找到特定的businessAccountmodel 然后为每个BusinessAccountModel一个Works示例模型。

class BusinessAccountModel(models.Model):
    business_title = models.CharField(max_length=70)
    business_description = models.CharField(max_length=500)
    status = models.CharField(max_length=100)
    note = models.CharField(max_length=200)
    user = models.OneToOneField(UserModel,on_delete=models.CASCADE)

    class Meta:
        db_table = 'wp_business_acc'


class ProfessionTagsModel(models.Model):
    tag_name = models.CharField(max_length=20)
    business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)

    class Meta:
        db_table = 'profession_tags'


class ServiceAreasModel(models.Model):
    city_name = models.CharField(max_length=20)
    business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)
    
    class Meta:
        db_table = 'service_areas'


class WorkSamplesModel(models.Model):
    work_sample_image = models.ImageField(blank=True,null=True,upload_to="work_samples")
    work_sample_description = models.CharField(max_length=1000)
    is_business_card_image = models.BooleanField(default=False)
    business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)

    class Meta:
        db_table = 'work_samples'

BusinessAccountModel -PortyTagsModel:1:M

BusinessAccountModel- ServiceAreasModel:1:M

BusinessAccountModel -WorksamplesModel:1:M

data in request

city_name = 'Nashik'
tags = ['tag 1','tag 2', 'tag 3']

I try this

ws = WorkSamplesModel.objects.filter(business_account__serviceareasmodel__city_name=city_name,
        business_account__professiontagsmodel__tag_name__in=tags_list,
        is_business_card_image=True).distinct()

Now I want business_title ,business_description,status,note from BusinessAccountModel and
work_sample_image, work_sample_description, is_business_card_image from WorkSampleModel and
user_name,profile_pic from UserModel

how to create serializer for it?

models
I want to find a specific BusinessAccountModel using city_name and tags
and then one WorkSamplesModel for each BusinessAccountModel.

class BusinessAccountModel(models.Model):
    business_title = models.CharField(max_length=70)
    business_description = models.CharField(max_length=500)
    status = models.CharField(max_length=100)
    note = models.CharField(max_length=200)
    user = models.OneToOneField(UserModel,on_delete=models.CASCADE)

    class Meta:
        db_table = 'wp_business_acc'


class ProfessionTagsModel(models.Model):
    tag_name = models.CharField(max_length=20)
    business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)

    class Meta:
        db_table = 'profession_tags'


class ServiceAreasModel(models.Model):
    city_name = models.CharField(max_length=20)
    business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)
    
    class Meta:
        db_table = 'service_areas'


class WorkSamplesModel(models.Model):
    work_sample_image = models.ImageField(blank=True,null=True,upload_to="work_samples")
    work_sample_description = models.CharField(max_length=1000)
    is_business_card_image = models.BooleanField(default=False)
    business_account = models.ForeignKey(BusinessAccountModel,on_delete=models.CASCADE)

    class Meta:
        db_table = 'work_samples'

BusinessAccountModel - ProfessionTagsModel : 1:M

BusinessAccountModel - ServiceAreasModel : 1:M

BusinessAccountModel - WorkSamplesModel : 1:M

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

写下不归期 2025-02-03 19:20:36
ws = WorkSamplesModel.objects.filter(business_account__serviceareasmodel__city_name=city_name,
        business_account__professiontagsmodel__tag_name__in=tags_list,
        is_business_card_image=True).distinct()

序列化器

class SearchWorkingProgessionalsSerializers(serializers.Serializer):
    business_title = serializers.CharField(source='business_account.business_title')
    business_description = serializers.CharField(source='business_account.business_description')
    status = serializers.CharField(source='business_account.status')
    note = serializers.CharField(source='business_account.note')
    work_sample_image = serializers.ImageField()
    work_sample_description = serializers.CharField(max_length=1000)
ws = WorkSamplesModel.objects.filter(business_account__serviceareasmodel__city_name=city_name,
        business_account__professiontagsmodel__tag_name__in=tags_list,
        is_business_card_image=True).distinct()

Serializer for it

class SearchWorkingProgessionalsSerializers(serializers.Serializer):
    business_title = serializers.CharField(source='business_account.business_title')
    business_description = serializers.CharField(source='business_account.business_description')
    status = serializers.CharField(source='business_account.status')
    note = serializers.CharField(source='business_account.note')
    work_sample_image = serializers.ImageField()
    work_sample_description = serializers.CharField(max_length=1000)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文