我写信是为了寻求您对我的 Django 项目的帮助。我创建了一个包含主类别和子类别数据的数据库,但我正在努力检索相关记录。特别是,我正在寻找主 ID - 子 ID 关系。
class Categories(models.Model):
cat_id = models.AutoField(primary_key=True)
cat_name = models.CharField(max_length=200, help_text='Добавь новую категорию')
def __str__(self):
return f'{self.cat_name}'
class Subcategories(models.Model):
sub_id = models.AutoField(primary_key=True)
sub_cat = models.ForeignKey(Categories, on_delete=models.CASCADE,)
sub_name = models.CharField(max_length=200, help_text='Добавь новую подкатегорию')
def __str__(self):
return f'{self.sub_cat} {self.sub_name}'
class Masters(models.Model):
master_id = models.AutoField(primary_key=True)
sub_master = models.ManyToManyField(Subcategories)
name = models.CharField(max_length=200, help_text='Имя')
info = models.CharField(max_length=500, help_text='Дополнительная информация', default=None, null=True, blank=True)
phone = models.CharField(max_length=10, help_text='Контактный номер телефона', default=None, null=True, blank=True)
address = models.CharField(max_length=500, help_text='Адрес, при наличии', default=None, null=True, blank=True)
tg = models.CharField(max_length=20, help_text='Ник или ссылка на telegram', default=None, null=True, blank=True)
wa = models.CharField(max_length=20, help_text='Ник или ссылка на whatsapp', default=None, null=True, blank=True)
ig = models.CharField(max_length=20, help_text='Ник или ссылка на instagram', default=None, null=True, blank=True)
vk = models.CharField(max_length=20, help_text='Ник или ссылка на vk', default=None, null=True, blank=True)
password = models.CharField(max_length=20, editable=False, unique=True)
visability = models.BooleanField(default=False)
def __str__(self):
return f'{self.master_id}, {self.sub_master}, {self.name}, {self.phone}, {self.address}, {self.tg}, ' \
f'{self.wa}, {self.ig}, {self.visability}, {self.password},({", ".join(subcategories.sub_name for subcategories in self.sub_master.all())})'
我尝试了多种选择,包括阅读文档和在论坛上搜索答案,但没有一个对我有帮助。以下是我考虑过的选项:
Masters.subcategories_set.through.objects.filter(master_id=12)
AttributeError:类型对象“Masters”没有属性“subcategories_set”
AttributeError: type object 'Masters' has no attribute 'subcategories
属性错误:类型对象“大师”没有属性“子类别”
master = Masters.objects.get(master_id=12)
objects = master.sub_master.all()
]> 此选项仅返回子类别和主对象的名称,但我需要主 - 子类别关系中的关联 ID。
我觉得我错过了一些明显的东西,但我似乎无法弄清楚它是什么。
master = Masters.objects.get(master_id=pk)
s_m = master.sub_master.all()
connected_subs = []
for sub in s_m:
connected_subs.append(sub.sub_id)
我找到答案了