Как я могу включить внешний ключ в форму Django? - PullRequest
0 голосов
/ 03 июля 2019

Есть ли способ, которым внешний ключ может быть включен в формы Django или виджеты в модели Django?

Я использую Django 2.2.2, и у меня есть созданная модель (Accelerator).Я также создал форму (обзор).Я создал Review с использованием форм Django, потому что мне нужно использовать виджеты, чтобы определенные поля отображались в качестве переключателей, и я понимаю, что виджеты нельзя использовать в моделях.

Однако мне также нужен один из моих Reviewполя формы должны быть внешним ключом, связанным с моделью ускорителя, но мой терминал только что сообщил мне, что это атрибут, которого нет в формах Django.

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

class Accelerator(models.Model):
    name = models.CharField(max_length=100)
    summary = models.TextField()
    overall_rating = models.DecimalField(decimal_places=2, max_digits=3)
    author = models.ForeignKey(User, on_delete=models.CASCADE, default='admin')
    logo = models.ImageField(default='default.jpg', upload_to='logos')

    def __str__(self):
        return self.name

RATINGS = ['1', '2', '3', '4', '5']

class Review(forms.Form):
    subject = forms.ForeignKey(Accelerator, on_delete=models.CASCADE, blank=False)
    author = forms.ForeignKey(User, on_delete=models.CASCADE, blank=False)
    feedback = forms.TextField(blank=False)
    date_posted = forms.DateTimeField(default=timezone.now)
    mentorship = forms.ChoiceField(widget=forms.RadioSelect(choices=RATINGS))
    hiring = forms.ChoiceField(widget=forms.RadioSelect(choices=RATINGS))
    community = forms.ChoiceField(widget=forms.RadioSelect(choices=RATINGS))
    fundraising = forms.ChoiceField(widget=forms.RadioSelect(choices=RATINGS))
    corporate_dev = forms.ChoiceField(widget=forms.RadioSelect(choices=RATINGS))

1 Ответ

0 голосов
/ 03 июля 2019

Используйте ModelChoiceField

field = forms.ModelChoiceField(queryset=YourModel.objects.all())

В вашем случае

subject = forms.ModelChoiceField(queryset=Accelerator.objects.all())
author = forms.ModelChoiceField(queryset=User.objects.all())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...