Size: a a a

Django [ru] #STAY HOME

2019 December 14

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
class MessageSerializer(serializers.ModelSerializer):
 client__user__id = serializers.IntegerField()
 class Meta:
   model = Message
   fields = ('id', 'client', 'client__user__id', 'text', 'attempt', 'is_complete', 'created')

сделал так, не работает
Я не знаю как у тебя модели выглядят, я тебе привел примерный вид, как вытягивать поле с помощью лукап выражений.
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Если клиент - это юзер в фк, то просто вытягивай из него пк
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
client__pk
источник

d

djigit0s in Django [ru] #STAY HOME
нет, в Client есть отдельное поле, называется user_id
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
И не надо для сериализатора модели объявлять поле
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
нет, в Client есть отдельное поле, называется user_id
Ох блин, ща бы в ОРМ не объекты а пк хранить
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Ну тогда client__user_id
источник

d

djigit0s in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Ну тогда client__user_id
та же ошибка, Field name client__user_id is not valid for model Message.
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
та же ошибка, Field name client__user_id is not valid for model Message.
Смотри модель, говорю же
источник

d

djigit0s in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Смотри модель, говорю же
class Client(models.Model):
 user_id = models.CharField(max_length=50, unique=True)
 user_name = models.CharField(max_length=100)
 is_admin = models.BooleanField(default=False)
 created = models.DateTimeField(auto_now_add=True)

 class Meta:
   ordering = ['-created']
   verbose_name = 'Client'
   verbose_name_plural = 'Clients'

 def str(self):
   return self.user_name


class Message(models.Model):
 client = models.ForeignKey(
     'Client', related_name='messages', on_delete=models.CASCADE)
 text = models.CharField(max_length=500, blank=True)
 attempt = models.IntegerField(default=0)
 is_complete = models.BooleanField(default=False)
 created = models.DateTimeField(auto_now_add=True)

 class Meta:
   ordering = ['-created']
   verbose_name = 'Message'
   verbose_name_plural = 'Messages'

 def str(self):
   return self.text
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Если юзер_айди - это объект, то дополнительно вытягивай из него атрибут пк
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
class Client(models.Model):
 user_id = models.CharField(max_length=50, unique=True)
 user_name = models.CharField(max_length=100)
 is_admin = models.BooleanField(default=False)
 created = models.DateTimeField(auto_now_add=True)

 class Meta:
   ordering = ['-created']
   verbose_name = 'Client'
   verbose_name_plural = 'Clients'

 def str(self):
   return self.user_name


class Message(models.Model):
 client = models.ForeignKey(
     'Client', related_name='messages', on_delete=models.CASCADE)
 text = models.CharField(max_length=500, blank=True)
 attempt = models.IntegerField(default=0)
 is_complete = models.BooleanField(default=False)
 created = models.DateTimeField(auto_now_add=True)

 class Meta:
   ordering = ['-created']
   verbose_name = 'Message'
   verbose_name_plural = 'Messages'

 def str(self):
   return self.text
Ох ёмаё
источник

d

djigit0s in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Если юзер_айди - это объект, то дополнительно вытягивай из него атрибут пк
это не объект, а Charfield
источник

d

djigit0s in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Ох ёмаё
что случилось?
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
та же ошибка, Field name client__user_id is not valid for model Message.
Ты убрал то поле из сериализатора?
источник

d

djigit0s in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Ты убрал то поле из сериализатора?
да
источник

d

djigit0s in Django [ru] #STAY HOME
class MessageSerializer(serializers.ModelSerializer):
 class Meta:
   model = Message
   fields = ('id', 'client', 'client__user_id', 'text', 'attempt', 'is_complete', 'created')
   depth=1
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
class MessageSerializer(serializers.ModelSerializer):
 class Meta:
   model = Message
   fields = ('id', 'client', 'client__user_id', 'text', 'attempt', 'is_complete', 'created')
   depth=1
Попробуй клиента убери
источник

d

djigit0s in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Попробуй клиента убери
безрезультатно
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
djigit0s
class MessageSerializer(serializers.ModelSerializer):
 class Meta:
   model = Message
   fields = ('id', 'client', 'client__user_id', 'text', 'attempt', 'is_complete', 'created')
   depth=1
И вообще, с depth ща должно без юзер_айди выводиться
источник