Как получить много-много данных в django в одной модели - PullRequest
0 голосов
/ 07 августа 2020
class Consumer (models.Model):
     name=models.CharField(max_length=32)
     address=models.CharField(max_length=32)
     telephone=models.CharField(max_length=32)
     email=models.CharField(max_length=32)
     ac_no=models.IntegerField(default=0)
class Consumer_order(models.Model):
     name=models.ForeignKey(Consumer, on_delete=models.CASCADE)
     ac_no=models.ManyToManyField(Consumer)
     newspaper=models.ForeignKey(Newspaper, on_delete=models.CASCADE)
     added_date=models.DateField(max_length=32,auto_now_add=True)

Я пробую много способов отношения «многие ко многим», но не работаю, возникает эта ошибка (поля.E302, E303, E304). Как получить модель Consumer из ac_no в Consumer_order в ac_no поле данных?

ac_no не отображать целочисленное значение

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Вы можете использовать related_name

class Consumer(models.Model):
     name=models.CharField(max_length=32)
     address=models.CharField(max_length=32)
     telephone=models.CharField(max_length=32)
     email=models.EmailField(max_length=32)
     ac_no=models.CharField(blank=True,max_length=254)

     def __str__(self):
         return self.name

class Consumer_order(models.Model):
     name=models.ForeignKey(Consumer,on_delete=models.CASCADE,related_name='consumer')
     ac_no=models.ManyToManyField(Consumer)
     newspaper=models.ForeignKey(Newspaper, on_delete=models.CASCADE,related_name='xyz')
     added_date=models.DateField(max_length=32,auto_now_add=True)
0 голосов
/ 07 августа 2020

Думаю, если я хорошо понял ваш вопрос, вам следует добавить в это поле параметр related_name. Я думаю, что эта проблема возникает из-за того, что вы дважды вызываете одну и ту же модель в своей модели Consumer_order.

    name=models.ForeignKey(Consumer,related_name="Consumer_name", on_delete=models.CASCADE)
     
    ac_no=models.ManyToManyField(Consumer,related_name="Consumer_ac_no")

Обратите внимание, если вы хотите получить доступ к ac_no модели Consumer из модели Consumer_order, у вас должен быть такой пример:

 #to get specific object consumer_order in this example I choose object with specific date ,you can crate it ,if you want loop throught all objetcs use objects.all() , you can also directly use .filter : Consumer_order.objects.filter(added_date='2019-11-28').first()
 consumer_order =Consumer_order.objects.get(added_date='2019-11-28')
 #to get all objects consumer into the filed ac_no in Consumer_order model
 ac_no_all =consumer_order.ac_no
 # to loop throught all the consumer object and print ac_no intger
 for ac_no_ in ac_no_all:
     print(ac_no_.ac_no)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...