Как обновить страницу в Django с темой ForeignKey - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в django, я пытаюсь обновить страницу с иностранным ключом к теме.Вот мой код

models.py

class Subject(models.Model):
    title = models.CharField(max_length = 200)
    slug = models.SlugField(blank = False)
    visible = models.BooleanField(default = True)
    position = models.IntegerField()
    date_published = models.DateTimeField(auto_now_add = True)
    date_updated = models.DateTimeField(auto_now_add=False)

    def __str__(self):
        return self.title


class Page(models.Model):
    subject = models.ForeignKey(Subject, on_delete= models.CASCADE)
    title = models.CharField(max_length = 200)
    slug = models.SlugField(blank = False)
    description = models.TextField()
    thumbs = models.ImageField(blank = True)
    visible = models.BooleanField(default = True)
    position = models.IntegerField()
    date_published = models.DateTimeField(auto_now_add = True, auto_now=False)
    date_updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __str__(self):
        return self.title

urls.py

urlpatterns = [
    path('dashboard/', views.dashboard, name='dashboard'),
    re_path(r'^dashboard/edit/(?P<subject_slug>[\w-]+)/(?P<slug>[\w-]+)', views.edit_article, name='edit_page'),
]

views.py

def edit_article(request, subject_slug, slug):

    subject = Subject.objects.get(slug = subject_slug)
    article = subject.page_set.get(slug = slug)
    form = ArticleForm(request.POST or None, instance = article)

    if request == request.POST:
        form = ArticleForm(request.POST, instance = article)

        if form.is_valid():
            c = form.save( commit = False)
            c = subject
            c.save()

            return HttpResponseRedirect('/dashboard/')

    context = {
        'title' : article.title,
        'article' : article,
        'form':form
        }

    return render(request, 'dashboard/editarticle.html', context)

forms.py

from django import forms
from .models import Subject, Page, NewsFeed
class ArticleForm(forms.ModelForm):

    class Meta:
        model = Page
        fields = ['title','slug','description','thumbs', 'visible','position']

article.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Edit article</title>
    <link rel="stylesheet" href="">

</head>
<body>
    <h1>{{ title }}</h1>
    <form  method="POST" accept-charset="utf-8">{% csrf_token %}
    {{ form.as_p }} 
    <input type ='submit' value='submit'/>
    </form>
</body>
</html>

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

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Попробуйте напечатать статью, которую вы получаете от slug, если она получает статью, просто назначьте

form = ArticleForm(instance = article)

Теперь у вас будет инициализированная форма с предыдущими значениями.

Еще одно предложение, попробуйте использовать базовый вид класса django.Все еще есть сомнения прокомментировать это.

0 голосов
/ 11 октября 2018

Вы пробовали

def my_view(request):
    ...
    return redirect('/some/url/')

Ссылка https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/

...