Size: a a a

Django [ru] #STAY HOME

2019 September 17

e

e\/gen in Django [ru] #STAY HOME
Denis Ivlev
Даже при смене типа поля происходит alter, а если не получается, то просто ругается на несовместимость типов.
да я же не говорю, что это поведение по умолчанию)

увы я не вспомню условия для воспроизведения
источник

W

Worlak2 in Django [ru] #STAY HOME
Dmitry
ну тогда нужна связь между объектами на уровне моделей и всё
Если на уровне моделей то он просто берет поля от соседних моделей, а не делает их вложенными
источник

DI

Denis Ivlev in Django [ru] #STAY HOME
Тогда зачем вообще это писать?
источник

e

e\/gen in Django [ru] #STAY HOME
чтобы аккуратно обновляли 🤔
источник

e

e\/gen in Django [ru] #STAY HOME
те, кто не делают бекапы ещё остались
источник

D

Dmitry in Django [ru] #STAY HOME
Worlak2
Если на уровне моделей то он просто берет поля от соседних моделей, а не делает их вложенными
а ты описал сериалайзер поля, которое хочешь сделать вложенным?
источник

D

Dmitry in Django [ru] #STAY HOME
class СериалайзерПоля(serializers.ModelSerializer):
   class Meta:
       model = Поле
       fields =
'all'

class TaskSerializer(serializers.ModelSerializer):
   поле = СериалайзерПоля()
   class Meta:
       model = Tasks
       fields = ['action', 'поле']
источник

W

Worlak2 in Django [ru] #STAY HOME
Dmitry
а ты описал сериалайзер поля, которое хочешь сделать вложенным?
Сейчас прикреплю полный кусок
источник

DI

Denis Ivlev in Django [ru] #STAY HOME
e\/gen
чтобы аккуратно обновляли 🤔
🤦‍♂
источник

W

Worlak2 in Django [ru] #STAY HOME
Dmitry
class СериалайзерПоля(serializers.ModelSerializer):
   class Meta:
       model = Поле
       fields =
'all'

class TaskSerializer(serializers.ModelSerializer):
   поле = СериалайзерПоля()
   class Meta:
       model = Tasks
       fields = ['action', 'поле']
class ParamsSerializer(serializers.ModelSerializer):
   class Meta:
       model=Params
       fields='__all__'

class TaskSerializer(serializers.ModelSerializer):
   params=ParamsSerializer()
   class Meta:
       model = Tasks
       fields = ['action','params']



class Params(models.Model):
   parameter=models.CharField(max_length=40,default='hs')

class Tasks(models.Model):
   action = models.CharField(max_length=45)
   status = models.CharField(max_length=5)
   parameter=models.ForeignKey(Params,on_delete=models.CASCADE)
   token = models.ForeignKey(Client, on_delete=models.CASCADE, to_field='token')
источник

T

Tim in Django [ru] #STAY HOME
parametr=ParamsSerializer() ?
источник

W

Worlak2 in Django [ru] #STAY HOME
С таким обращением валиться в ошибку
источник

D

Dmitry in Django [ru] #STAY HOME
Worlak2
class ParamsSerializer(serializers.ModelSerializer):
   class Meta:
       model=Params
       fields='__all__'

class TaskSerializer(serializers.ModelSerializer):
   params=ParamsSerializer()
   class Meta:
       model = Tasks
       fields = ['action','params']



class Params(models.Model):
   parameter=models.CharField(max_length=40,default='hs')

class Tasks(models.Model):
   action = models.CharField(max_length=45)
   status = models.CharField(max_length=5)
   parameter=models.ForeignKey(Params,on_delete=models.CASCADE)
   token = models.ForeignKey(Client, on_delete=models.CASCADE, to_field='token')
class Param(models.Model):
   parameter=models.CharField(max_length=40,default='hs')
   task=models.ForeignKey(Task,on_delete=models.CASCADE)

думаю в этом дело
источник

D

Dmitry in Django [ru] #STAY HOME
какая-то обратная вложенность получается иначе
источник

T

Tim in Django [ru] #STAY HOME
можно сделать через SerializerMethodField
источник

W

Worlak2 in Django [ru] #STAY HOME
Dmitry
какая-то обратная вложенность получается иначе
но с таким подходом у всех эти поля будут одинаковы, а надо каждому свое
источник

W

Worlak2 in Django [ru] #STAY HOME
Tim
можно сделать через SerializerMethodField
Пример?
источник

T

Tim in Django [ru] #STAY HOME
Worlak2
Пример?
class TaskSerializer(serializers.ModelSerializer):

   params=ParamsSerializer()
   class Meta:
       model = Tasks
       fields = ['action','params']
источник

W

Worlak2 in Django [ru] #STAY HOME
Tim
class TaskSerializer(serializers.ModelSerializer):

   params=ParamsSerializer()
   class Meta:
       model = Tasks
       fields = ['action','params']
Got AttributeError when attempting to get a value for field params on serializer TaskSerializer.
The serializer field might be named incorrectly and not match any attribute or key on the Tasks instance.
Original exception text was: 'Tasks' object has no attribute 'params'.
источник

T

Tim in Django [ru] #STAY HOME
Worlak2
Got AttributeError when attempting to get a value for field params on serializer TaskSerializer.
The serializer field might be named incorrectly and not match any attribute or key on the Tasks instance.
Original exception text was: 'Tasks' object has no attribute 'params'.
ща, не тот кусок кода, случайно вставил
источник