У меня есть ModelForm для моего риска создан как:Добавить ModelForm поле как атрибут к объекту
class RiskForm(forms.ModelForm):
class Meta:
model = Risk
fields = '__all__'
def __init__(self, *args, **kwargs):
progid = kwargs.pop('progid')
super(RiskForm, self).__init__(*args,**kwargs)
dict_of_fields = {}
all_char = Program.objects.get(id=progid).char_set.all()
for char in all_char:
c = []
for cat in char.cat_set.all():
c.append((cat.label, cat.label))
dict_of_fields[char.label] = c
self.fields[char.label] = forms.ChoiceField(c)
Если объект риски определяются как:
class Risk(models.Model):
program = models.ForeignKey(Program, on_delete=models.CASCADE)
label = models.CharField(max_length=200, default='')
def __str__(self):
return self.label
Однако, я хочу, чтобы хранить дополнительные поля, которые я создал в моей базе данных под моим объектом Risk. Поскольку у меня есть это сейчас, в нем хранятся только две программы «атрибуты» и «метка». Тем не менее, я также хочу сохранить ответы на характеристики в моей базе данных для последующего использования.
Для получения дополнительной информации о том, как я установил вещи вверх: Django Form Based on Variable Attributes
и экран печати моей ModelForm: https://gyazo.com/89c9833613dbcc7e8d27cc23a3abaf72
Можно ли хранить все 6 ответов под моим объектом риска в моей базе данных? Если да, то как мне это сделать?
Вы можете создать модель ответа и иметь много разных отношений с вашей моделью риска. – Kishan
Не могли бы вы рассказать? Я все еще изучаю Python, и мой руководитель сказал, что я должен избегать многих отношений. Если нет другого пути, я не вижу другого способа, кроме как использовать их. Однако я понятия не имею, как это сделать. Не могли бы вы мне помочь/дать мне общий (контурный) код о том, как это написать? –
Я бы предложил вам спросить своего руководителя, почему следует избегать отношений многих-ко-многим! Тем не менее, общая идея, которую я придерживаюсь, чтобы решить эту проблему, будет связана с ForeighKey, OneToOneField или ManyToManyField: Если вы можете сказать, что «один риск может иметь много ответов, один ответ может быть во многих рисках». Затем используйте ManyToManyField. Если вы можете сказать, что «у одного риска может быть много ответов, один ответ может быть в« Один риск ». Затем используйте« Foreignkey ». Я хочу знать, как ваши ответы связаны с риском или программами? – Kishan