Size: a a a

Django [ru] #STAY HOME

2021 February 22

IK

Ivan Karniyenka in Django [ru] #STAY HOME
Nikolay Cherniy
тебе приходит децимал, а ты его во флоат сохраняешь?
да, потому что decimal не перегоняется в json
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Ivan Karniyenka
{'type': 'type',
  'description': 'desc',
  'total': {'additional': Decimal('0.00'), 'original': Decimal('0.00')}} - что хочу сохранить

raw_data = JSONField(blank=True, null=True) - в моделе
может быть сделать сериализатор с вложенным для этого джейсона и в ините вложенного переводить приходящий децимал во флоат
источник

TB

Tim B in Django [ru] #STAY HOME
Есть 3 модельки
class ModelA(models.Model):
   name = models.CharField(max_length=1)

class ModelB(models.Model):
   name = models.CharField(max_length=1)

class ModelAItems(models.Model):
   model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE, related_name='items')
   model_b = models.ForeignKey(ModelB, on_delete=models.CASCADE)

Как получить список ModelA  где у каждого объекта items__model_b=N?

Ну примерно так (:
ModelA.objects.annotate(items=ModelAItems.objects.filter(model_b__id=N, model_a_id=current_model_a_id))
источник

IK

Ivan Karniyenka in Django [ru] #STAY HOME
Nikolay Cherniy
может быть сделать сериализатор с вложенным для этого джейсона и в ините вложенного переводить приходящий децимал во флоат
понял. спасибо. пойду пробовать
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Tim B
Есть 3 модельки
class ModelA(models.Model):
   name = models.CharField(max_length=1)

class ModelB(models.Model):
   name = models.CharField(max_length=1)

class ModelAItems(models.Model):
   model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE, related_name='items')
   model_b = models.ForeignKey(ModelB, on_delete=models.CASCADE)

Как получить список ModelA  где у каждого объекта items__model_b=N?

Ну примерно так (:
ModelA.objects.annotate(items=ModelAItems.objects.filter(model_b__id=N, model_a_id=current_model_a_id))
.annotate(cnt=Count(items)).filter(cnt=N)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Ivan Karniyenka
понял. спасибо. пойду пробовать
хотя не уверен что на выходе джейсон получится, возможно просто в ините основного перехватывать и переводить
источник

S

Shodmon in Django [ru] #STAY HOME
Ivan Karniyenka
понял. спасибо. пойду пробовать
сделай также сначала так
from django.core.serializers.json import DjangoJSONEncoder

raw_data = JSONField(blank=True, null=True, encode=DjangoJSONEncoder)

а потом уже, то что Николай пишет, если не получится
источник

IK

Ivan Karniyenka in Django [ru] #STAY HOME
Shodmon
сделай также сначала так
from django.core.serializers.json import DjangoJSONEncoder

raw_data = JSONField(blank=True, null=True, encode=DjangoJSONEncoder)

а потом уже, то что Николай пишет, если не получится
тоже отличная мысль. спасибо
источник

S

Shodmon in Django [ru] #STAY HOME
Ivan Karniyenka
тоже отличная мысль. спасибо
потом отпишись, тоже интересно

потому что если верить доке оно понимает десимал
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Dan Tyan
.annotate(cnt=Count(items)).filter(cnt=N)
там я так понимаю n не количество, как можно было бы подумать исходя из названия переменной)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
а что =) ?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Dan Tyan
а что =) ?
видимо конкретный инстанс B
источник

TB

Tim B in Django [ru] #STAY HOME
Nikolay Cherniy
там я так понимаю n не количество, как можно было бы подумать исходя из названия переменной)
Да, сорян N это id модельки ModelB
источник

DT

Dan Tyan in Django [ru] #STAY HOME
.filter(items__model_b__id=b_id)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Tim B
Да, сорян N это id модельки ModelB
мне кажется тебе нужно добавить м2м связь между моделями через эту таблицу, чтобы было проще обращаться
источник

TB

Tim B in Django [ru] #STAY HOME
Dan Tyan
.filter(items__model_b__id=b_id)
Мне надо передать queryset в serializer ModelA, у нее есть items и в нем должна быты только те items ы где items__model_b__id=ID_MODEL_B
источник

IK

Ivan Karniyenka in Django [ru] #STAY HOME
Shodmon
потом отпишись, тоже интересно

потому что если верить доке оно понимает десимал
это помогло на данный момент. спасибо большое)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Tim B
Мне надо передать queryset в serializer ModelA, у нее есть items и в нем должна быты только те items ы где items__model_b__id=ID_MODEL_B
так не работает ?
источник

S

Shodmon in Django [ru] #STAY HOME
Ivan Karniyenka
это помогло на данный момент. спасибо большое)
👍
источник

TB

Tim B in Django [ru] #STAY HOME
Dan Tyan
так не работает ?
Нет, если у ModelA есть несколько items и тот который мне надо tems__model_b__id=ID_MODEL_B, возвращается все items
источник