class News(models.Model):
title = models.CharField(max_length=255, verbose_name="Заголовок")
slug = models.CharField(max_length=255, unique=True, db_index=True, verbose_name="URL")
content = models.TextField(verbose_name="Содержимое")
photo = models.ImageField(upload_to="news/%Y/%m/%d/", verbose_name="Изображение")
video = models.URLField(max_length=255, blank=True, null=True, verbose_name="Ссылка на видео")
time_update = models.DateTimeField(auto_now=True, verbose_name="Время изменения")
category = models.ForeignKey("NewsCategories", on_delete=models.PROTECT, verbose_name="Категория")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("show_news", kwargs={"news_slug": self.slug})
class Meta:
verbose_name = "Новость"
verbose_name_plural = "Новости"
ordering = ["-time_update"]
class Comments(models.Model):
news = models.ForeignKey(
News,
on_delete=models.CASCADE,
related_name='comments_news',
verbose_name="Новость"
)
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Автор комментария")
time_create = models.DateTimeField(auto_now_add=True, verbose_name="Время создания")
content = models.TextField(verbose_name="Содержимое")
status = models.BooleanField(verbose_name="Публикация комментария", default=False)
def __str__(self):
return self.content
class Meta:
verbose_name = "Комментарий"
verbose_name_plural = "Комментарии"
ordering = ["-time_create"]
< /code>
Formulare: < /p>
class CommentForm(forms.ModelForm):
content = forms.CharField(
label='Добавить комментарий',
widget=forms.Textarea(attrs={'rows': '4', 'class': 'form-control'}))
class Meta:
model = Comments
fields = ['content']
< /code>
utils: < /p>
class DataMixin:
def get_user_context(self, **kwargs):
context = kwargs
cats = NewsCategories.objects.annotate(Count('news'))
context["cats"] = cats
if "category_selected" not in context:
context["category_selected"] = 0
return context
< /code>
Ansichten: < /p>
class ShowNews(DataMixin, DetailView, FormView):
model = News
template_name = "main_app/show_news.html"
slug_url_kwarg = "news_slug"
context_object_name = "news"
form_class = CommentForm
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
c_def = self.get_user_context(title=context["news"])
return dict(list(context.items()) + list(c_def.items()))
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.user = request.user
comment.save()
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
return render(request, self.template_name, self.get_context_data())
< /code>
html: < /p>
{% with news.comments_news.count as comments %}
Комментарии ({{ comments }})
{% endwith %}
{% for comment in news.comments_news.all %}
{{ comment.user }} написал(а) {{ comment.time_create }}
{{ comment.content|linebreaks }}
{% endfor %}
{% if user.is_authenticated %}
{% csrf_token %}
{{ form.non_field_errors }}
{% for f in form %}
{{ f.label }}:
{{ f }}
{{ f.errors }}
{% endfor %}
Отправить
{% endif %}
Ich verstehe, dass Sie das Nachrichtenmodellobjekt irgendwie in der Ansichtsdatei erhalten müssen, aber alle Methoden, die ich gefunden habe, waren nicht erfolgreich.
Bei der Übermittlung eines Formulars auf der Site wird der Wert "News_id" nicht in die Datenbank eingezogen (in die Tabelle mit Kommentaren). />[code]class News(models.Model): title = models.CharField(max_length=255, verbose_name="Заголовок") slug = models.CharField(max_length=255, unique=True, db_index=True, verbose_name="URL") content = models.TextField(verbose_name="Содержимое") photo = models.ImageField(upload_to="news/%Y/%m/%d/", verbose_name="Изображение") video = models.URLField(max_length=255, blank=True, null=True, verbose_name="Ссылка на видео") time_update = models.DateTimeField(auto_now=True, verbose_name="Время изменения") category = models.ForeignKey("NewsCategories", on_delete=models.PROTECT, verbose_name="Категория")
{% for comment in news.comments_news.all %} {{ comment.user }} написал(а) {{ comment.time_create }} {{ comment.content|linebreaks }}
{% endfor %}
{% if user.is_authenticated %}
{% csrf_token %} {{ form.non_field_errors }} {% for f in form %}
{{ f.label }}: {{ f }}
{{ f.errors }} {% endfor %}
Отправить
{% endif %} [/code] Ich verstehe, dass Sie das Nachrichtenmodellobjekt irgendwie in der Ansichtsdatei erhalten müssen, aber alle Methoden, die ich gefunden habe, waren nicht erfolgreich.
Ist pthread in glibc.so durch ein schwaches Symbol implementiert, um pthread-Stub-Funktionen bereitzustellen? Dies erklärt, dass sich schwache Symbole eher...
Ist pthread in glibc.so durch ein schwaches Symbol implementiert, um pthread-Stub-Funktionen bereitzustellen? Dies erklärt, dass sich schwache Symbole eher...
Ich habe eine Android -App und ich möchte sie verwenden, um Links von Netflix, Prime Video, HBO usw. an den Fernseher (Android -Fernseher, Chromecast, Samsung TV) zu senden. In der Lage sein:...
Ich habe eine Situation, in der ich den aktiven Benutzer gegen einen der Werte genehmigen möchte ( Organization ) In einer Fastapi -Route. Wenn ein Objekt eines bestimmten Typs eingereicht wird,...