Django добавить поле, когда пользователь нажимает кнопку - PullRequest
0 голосов
/ 20 февраля 2020

Можно ли добавить поле в модели в зависимости от того, сколько раз пользователь нажал кнопку?

пример: оригинальная модель образца

class samplemodel(models.Model):
  username=models.CharField(max_length=500)
  category=models.CharField(max_length=500)
  date=models.DateField(max_length=500)

html

 <input type="text" name="category">
 <input type="date">
 <input type="submit">

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

class samplemodel(models.Model):
  username=models.CharField(max_length=500)
  category=models.CharField(max_length=500)
  category1=models.CharField(max_length=500) /user add
  category2=models.CharField(max_length=500) /user add
  date=models.DateField(max_length=500)
  date1=models.DateField(max_length=500)/user add
  date2=models.DateField(max_length=500)/user add

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Я бы посоветовал вам создать 2 дополнительные таблицы:

Таблица CATEGORY с таблицей ForeignKey для USERCLICKDATEMODEL

Таблица DATE с ключом ForeignKey для USERCLICKDATEMODEL

Таким образом, вы можете иметь столько записей в любой таблице, сколько необходимо, с прямым подключением к исходной таблице

btw. Я бы не использовал зарезервированные слова, например, 'DATE' для имен таблиц и / или полей

0 голосов
/ 20 февраля 2020

Это очень плохая идея, давайте подумаем о том, что пользователи нажимали кнопку 1000 раз. Это означает, что вы добавляете 1000 полей в вашу модель логически. Для этого вы можете использовать два способа. Во-первых, вы можете добавить поле массива вашей модели и добавить новые даты в это поле:

class SampleModel(models.Model):
    # your other fields
    dates = ArrayField(
        models.DateField(),
    )

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

 class UserClickDateModel(models.Model):
     username = models.CharField(max_length=255) 
     category = models.CharField(max_length=255)
     clicked_date = models.DateField()

В качестве подсказок вы можете использовать иностранный ключ для имени пользователя. Также в django верблюд используется в общем случае для имен классов. Вы можете найти более подробную информацию django стиль кодирования здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...