Я немного изучил Django, используя «Курс Python Crash» Эрика Мэттса *, и наткнулся на следующую проблему. А именно, у меня был этот код:
class Topic(models.Model):
text = models.CharField(max_length=200)
public = models.BooleanField(default=False)
public_2 = False
def __str__(self):
return self.text
Тогда в функции просмотра, если я установлю public = True
и public_2 = True
, проверяя в оболочке, у меня будет topic.public = True
, но public_2 = False
. Почему это так, и есть ли способ изменить атрибут public_2
? Вот функция просмотра:
def new_entry(request, topic_id):
topic = get_object_or_404(Topic, id=topic_id)
if topic.owner != request.user:
raise Http404
if request.method != 'POST':
# No data submitted; create a blank form.
form = EntryForm()
else:
# POST data submitted; process data
form = EntryForm(data=request.POST)
if form.is_valid():
new_entry = form.save(commit=False)
new_entry.topic = topic
new_entry.public = True
new_entry.public_2 = True
new_entry.save()
return HttpResponseRedirect(reverse('learning_logs:topic',
args=[topic_id]))
context = {'topic': topic, 'form': form}
return render(request, 'learning_logs/new_entry.html', context)
Если нет способа изменить это, есть ли другие ограничения в отношении того, какие типы атрибутов класса Model могут быть изменены?