我根据Myfirstapp教程的初始设置尝试了一些事情。 https://docs.djangoproject.com/en/2.0/intro/tutorial01/
我从其他答案中尝试了许多不同的方法,但我收到错误或空白页面。所以会问一个干净的问题。
我有以下models.py
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
以下urls.py
from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('<int:pk>/editchoices/', views.ChoiceEditView.as_view(), name='results'),
path('<int:question_id>/vote/', views.vote, name='vote'),
]
我可以通过网址
显示与问题相关的所有choice_texts(和投票)path('<int:pk>/', views.DetailView.as_view(), name='detail'),
并查看
class DetailView(generic.DetailView):
model = Question
template_name = 'polls/detail.html'
与模板结合使用
<h1>{{ question.question_text }}</h1>
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
<input type="file" name="csv" accept="csv/*"/><br />
{% for choice in question.choice_set.all %}
<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
<label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>
我现在想要创建一个页面(表单,视图和模板页面),它为我提供与问题相关的所有choice_texts选项(基于url中的pk),以便编辑多个choice_texts(并保存)和可以添加1或2个选项。我已经为modelformset等尝试了很多代码示例,但无法让它们工作。我已经在其他视图中使用LoginRequiredMixin和@login_required将此功能限制为仅限注册用户(一旦我开始工作),但不想使用管理部分。
使用Django 2.0.4版
我尝试过以下forms.py
class ChoiceForm(ModelForm):
class Meta:
model = Choice
exclude = ('')
EditChoicesFormset = modelformset_factory(Choice, fields = ['choice_text'], exclude = [], can_delete = True, extra=1)