#django
#django
Вопрос:
Я новичок в Django, не могли бы вы мне помочь, у меня есть две модели, по названию континента и страны, в форме страны я хочу отображать только континенты в выпадающем списке, статус которых соответствует true?
Модели
from django.db import models
from smart_selects.db_fields import GroupedForeignKey, ChainedForeignKey
class Continent(models.Model):
name = models.CharField(max_length=255)
status=models.BooleanField(default=True)
def __str__(self):
return self.name
class Country(models.Model):
continent = models.ForeignKey(Continent, null=True, on_delete=models.SET_NULL)
status=models.BooleanField(default=True)
name = models.CharField(max_length=255)
def __str__(self):
return self.name
формы
class FormContinent(ModelForm):
class Meta:
model = Continent
fields = '__all__'
class FormCountry(ModelForm):
class Meta:
model = Country
fields = '__all__'
число просмотров
def continent(request):
form = FormContinent()
if request.method == 'POST':
form = FormContinent(request.POST)
form.is_valid()
form.save()
return redirect('/continent')
else:
context = {'form': form}
return render(request, 'continent.html', context)
def country(request):
form = FormCountry()
if request.method == 'POST':
form = FormCountry(request.POST)
form.is_valid()
form.save()
return redirect('/country')
else:
context = {'form': form}
return render(request, 'country.html', context)
Ответ №1:
Вы можете использовать limit_choices_to=…
параметр [Django-doc]:
class Country(models.Model):
continent = models.ForeignKey(
Continent,
# ↓ limit choices to Continents with status=True
limit_choices_to={'status': True},
null=True,
on_delete=models.SET_NULL
)
# …