Django前端内联表格与相关模型

时间:2014-11-24 11:40:36

标签: django-forms django-views

我是一个python / django新手。对不起我的英语我不是母语为英语的人。我正在尝试制作一个用户可以添加相关模型的表单。在管理网站上,我能够做到这一点,但我很难在网站端实现同样的事情。

以下是管理员截图。我想在前端实现同样的方法,即可以在表单中添加新艺术家和新标签。

http://postimg.org/image/lv83s9fq5/

这是我的models.py

from django.db import models
from uuslug import uuslug
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User


class Tag(models.Model):
    name = models.CharField(max_length=200, unique=True)
    slug = models.CharField(max_length=200, unique=True)

    class Meta:
        ordering = ["name"]

    def __str__(self):
        return self.slug


class Artist(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.CharField(max_length=100)

    class Meta:
        ordering = ["name"]

    def __str__(self):
        return self.name


class Song(models.Model):
    S_KEYS = (
        ('C', 'C'),
        ('C#', 'C#'),
        ('D', 'D'),
        ('D#', 'D#'),
        ('E', 'E'),
        ('F', 'F'),
        ('F#', 'F#'),
        ('G', 'G'),
        ('G#', 'G#'),
        ('A', 'A'),
        ('A#', 'A#'),
        ('B', 'B'),
    )
    title = models.CharField(max_length=200)
    artist = models.ForeignKey(Artist)
    user = models.ForeignKey(User)
    song_key = models.CharField(max_length=2, choices=S_KEYS)
    body = models.TextField()
    views = models.IntegerField(default=0)
    slug = models.CharField(max_length=100, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    tags = models.ManyToManyField(Tag, blank=True)

    class Meta:
        ordering = ["title"]

    def __str__(self):
        return self.title


    def save(self, *args, **kwargs):
        self.slug = uuslug(self.title, instance=self, max_length=100)
        super(Song, self).save(*args, **kwargs)


    def add_view_count(self):
        if self.views is not None:
            self.views +=1

这是我的views.py

中的内容
class SongAdd(generic.CreateView):
    template_name= 'song/add.html'
    model = Song
    form_class = SongForm
    success_url = '/'


    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(SongAdd, self).form_valid(form)

我希望你能帮助我:)。

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用django-dynamic-formset应用,与管理员使用名称为inlines.js的应用相同。它有很好的例子来说明你需要的东西。