标签: inline-formset

具有内联模型表单或formset的基于类的基于django的视图

我有以下型号:

class Bill(models.Model):
    date = models.DateTimeField(_("Date of bill"),null=True,blank=True)

class Item(models.Model):
    name = models.CharField(_("Name"),max_length=100)
    price = models.FloatField(_("Price"))
    quantity = models.IntegerField(_("Quantity"))
    bill = models.ForeignKey("Bill",verbose_name=_("Bill"),
                             related_name="billitem")
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的:

from django.forms.models import inlineformset_factory
inlineformset_factory(Bill, Item)
Run Code Online (Sandbox Code Playgroud)

然后通过标准视图处理.

现在我想知道,如果有一种方法可以实现相同的(意思是:使用内联来添加/编辑属于账单的项目)使用基于类的视图(而不是管理界面).

django inline-formset django-class-based-views

55
推荐指数
3
解决办法
3万
查看次数

使用内联表单集创建模型和相关模型

[我已经在Django用户发布了这个| Google网上论坛也是.]

使用内联formset文档中的示例,我能够编辑属于特定模型的对象(使用模型形式).我一直在尝试使用相同的模式来 创建使用内联表单集的新对象,但是无法清除我的脑袋以便为此目的带出一个工作视图.

使用与上述链接相同的示例,我将如何创建"作者"模型的新实例及其相关的"书籍"对象?

django modelform inline-formset

42
推荐指数
3
解决办法
3万
查看次数

如何限制django admin内联formset

你如何限制django admin中的内联formset?问题:我有一张表A与B有1到n的关系.表A应该至少有一个表B项和最多5个表B项.

谢谢

django django-admin inline-formset

21
推荐指数
1
解决办法
2万
查看次数

Django - CreateView 不使用嵌套表单集保存表单

我正在尝试采用一种使用 Django-Crispy-Forms 布局功能保存带有主表单的嵌套表单集的方法,但我无法保存它。我正在关注代码示例项目,但无法验证表单集以保存数据。如果有人能指出我的错误,我将非常感激。我还需要在同一视图中为 EmployeeForm 添加三个内联。我尝试了 Django-Extra-Views,但无法实现。如果您建议为大约 5 左右的相同视图添加多个内联,我将不胜感激。我只想实现一个用于创建的页面Employee及其内联,例如Education, Experience, Others. 下面是代码:

楷模:

class Employee(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employees',
                                null=True, blank=True)
    about = models.TextField()
    street = models.CharField(max_length=200)
    city = models.CharField(max_length=200)
    country = models.CharField(max_length=200)
    cell_phone = models.PositiveIntegerField()
    landline = models.PositiveIntegerField()

    def __str__(self):
        return '{} {}'.format(self.id, self.user)

    def get_absolute_url(self):
        return reverse('bars:create', kwargs={'pk':self.pk})

class Education(models.Model):
    employee = models.ForeignKey('Employee', on_delete=models.CASCADE, related_name='education')
    course_title = models.CharField(max_length=100, null=True, blank=True)
    institute_name = models.CharField(max_length=200, null=True, blank=True)
    start_year = models.DateTimeField(null=True, blank=True)
    end_year = models.DateTimeField(null=True, …
Run Code Online (Sandbox Code Playgroud)

django jquery django-forms inline-formset

14
推荐指数
1
解决办法
1705
查看次数

Django:如何更改内联Formset中的字段小部件

我是Django的新手,我想我在文档中遗漏了这个.
问题是在inline-formset中我没有声明一个表单,只需传递两个模型来构造它.
我想知道如何使用内联formset更改单个字段的窗口小部件?

python forms django inline-formset

12
推荐指数
3
解决办法
1万
查看次数

inlineformset_factory在创建后创建新对象并编辑对象

在django文档中,有一个使用inlineformset_factory来编辑已创建对象的示例

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view

我改变了这个例子:

def manage_books(request):
    author = Author()
    BookInlineFormSet = inlineformset_factory(Author, Book, fields=('title',))
    if request.method == "POST":
        formset = BookInlineFormSet(request.POST, request.FILES, instance=author)
        if formset.is_valid():
            formset.save()
            return HttpResponseRedirect(author.get_absolute_url())
    else:
        formset = BookInlineFormSet(instance=author)
    return render_to_response("manage_books.html", {
        "formset": formset,
    })
Run Code Online (Sandbox Code Playgroud)

使用上面的内容,它只渲染没有父模型的内联模型.

使用inlineformset_factory创建一个新对象,比如作者,与多个图书相关联,这是什么方法?

使用django docs上面的Author Book模型的示例将很有帮助.Django文档仅供例如如何编辑使用inlineformset_factory已经创建的对象,而不是创造新的

django inline-formset

12
推荐指数
2
解决办法
2万
查看次数

Django formset_factory vs模型formset_factory vs inlineformset_factory

在Django中,表单可能很复杂。表单集可以使您想退出Django。我在那个时候。

有哪些不同的用例,以及要使用哪些用例的注意事项?

我正在寻找有关何时使用每个工厂的更好的指导,因为它们似乎取决于您何时知道什么类型的表单,字段以及是否要创建,编辑或删除(单个表单完全或单独)。父模型)。我已经阅读了许多演练,但是正在努力查看大图,尤其是当我尝试从基于函数的视图转换为基于类的视图时。

以下是一些带有假设/限制的伪代码,可帮助您帮助我理解不同之处。提供伪代码可能会有所帮助,例如哪种类型的表单(ModelForm或常规)与Formset一起使用,或者应该pop从表单中获取什么,因为这似乎是创建具有关系的表单的趋势。

假设您有一些模型:

class Dish(models.Model):
    name = models.CharField(max_length=50)


class Meal(models.Model):
    name = models.CharField(max_length=50)
    dishes = models.ManyToManyField(Dish,
                                    # through='OPTIIONALMealDishIntermediaryClassTable',
                                    related_name="meal")

class Reservation(models.Model):
    date = models.DateTimeField()
    greeting = models.CharField(max_length=255)
    meal = models.OneToOneField(Meal, on_delete=models.CASCADE)


class MealPhotos(models.Model):
    photo = models.OneToOneField(Photo, on_delete=models.CASCADE, related_name='mealPhoto')
    meal = models.ForeignKey(Meal, on_delete=models.CASCADE)
    # optional, so a photo can be attached to a dish if the picture is just of the dish
    dish = models.ForeignKey(Dish, blank=True, null=True, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

您想创建一个new Meal,同时要发送一个Reservation

  • 您将使用哪个工厂?
  • 是否取决于表格是否全部ModelForms?(这意味着你将如何手柄assignming了 …

django django-forms formset inline-formset

11
推荐指数
1
解决办法
671
查看次数

Django中的内联formset - 删除某些字段

我需要创建一个内联formset

a)排除某些字段MyModel完全显示

b)显示一些字段MyModel但阻止它们可编辑.

我尝试使用下面的代码,使用values()以便将查询集过滤到我想要返回的那些值.但是,这失败了.

任何有想法的人?

class PointTransactionFormset(BaseInlineFormSet):
    def get_queryset(self):
        qs = super(PointTransactionFormset, self).get_queryset()
        qs = qs.filter(description="promotion feedback")
        qs = qs.values('description','points_type') # this does not work
        return qs

class PointTransactionInline(admin.TabularInline):
    model = PointTransaction
    #formset = points_formset()
    #formset = inlineformset_factory(UserProfile,PointTransaction)
    formset = PointTransactionFormset
Run Code Online (Sandbox Code Playgroud)

django django-admin inline-formset

10
推荐指数
2
解决办法
1万
查看次数

使用内联在前端启用Django管理功能

我决定将我的管理网站的一些功能移到前端.功能包括使用一些外键内联管理一个模型.

为此,我已经安装了django-dynamic-formset JQuery插件(链接git)并且已经挣扎了几天.这是其中一个问题.

Django管理员已经实现了相同的功能.我可以根据需要添加,修改,删除内联和修改模型实例.我想知道为什么我应该使用这个JQuery插件,为什么在互联网上没有这么多关于这个主题的好教程?

我需要一个很好的最近的例子,说明如何在没有第三方JS文件的情况下在前端使用django formsets或inline formsets.如果它有链接(不是复选框)来删除内联项并添加将正确添加新内联的按钮,我会很高兴.

更具体一点,因为这个问题被认为过于宽泛:

我有两个模型School和SchoolPlace:

class School(models.Model):
     name = models.CharField(_('School name'), max_length=100)

class SchoolPlace(models.Model):

    school = models.ForeignKey(School, verbose_name=_('school place'), related_name='school_places', blank=True, null=True)

    name = models.CharField(_('School place name'), max_length=200)

    city = models.ForeignKey(City, blank=True, null=True, verbose_name=_('city'),
                     help_text='city')
Run Code Online (Sandbox Code Playgroud)

还有相应的形式:

class SchoolForm(forms.ModelForm):

      name = forms.CharField(
                             label=_('Name'),
                             widget=forms.TextInput(attrs={
                                'placeholder': _('school name')}),
                              max_length=100, required=True)

class SchoolPlaceForm(forms.ModelForm):

    name = forms.CharField(label=_('Name'),
                            widget=forms.TextInput(
                                        attrs={'placeholder': _('school place name')}),
                                        max_length=200,
                                        required=False)

    city = forms.ModelChoiceField(label=_('City'),
                                  widget=forms.Select(attrs={'class': 'ui search dropdown'}),
                                  queryset=City.objects.all(), required=False)

    class Meta:
        model …
Run Code Online (Sandbox Code Playgroud)

python django django-admin formset inline-formset

9
推荐指数
1
解决办法
707
查看次数

Django:Updateview inlineformset错误-(隐藏字段id)此字段是必需的

我正在尝试在 django 中编辑具有内联表单集的更新视图。下面是 model.py、forms.py、views.py 和模板文件。表单没有保存,所以我在views.py的post方法中放置了一个print(actor_form)来看看发生了什么。我得到以下 html 代码:

<input type="hidden" name="actor-TOTAL_FORMS" value="1" id="id_actor-TOTAL_FORMS" /><input type="hidden" name="actor-INITIAL_FORMS" value="1" id="id_actor-INITIAL_FORMS" /><input type="hidden" name="actor-MIN_NUM_FORMS" value="0" id="id_actor-MIN_NUM_FORMS" /><input type="hidden" name="actor-MAX_NUM_FORMS" value="1000" id="id_actor-MAX_NUM_FORMS" />
<tr><td colspan="2"><ul class="errorlist nonfield"><li>(Hidden field id) This field is required.</li></ul></td></tr>
<tr><th><label for="id_actor-0-actorName">ActorName:</label></th><td><input type="text" name="actor-0-actorName" value="www" maxlength="50" id="id_actor-0-actorName" /></td></tr>
<tr><th><label for="id_actor-0-DELETE">Delete:</label></th><td><label for="id_actor-0-DELETE" class="checkbox-inline"><input type="checkbox" name="actor-0-DELETE" id="id_actor-0-DELETE" />
</label><input type="hidden" name="actor-0-id" id="id_actor-0-id" /><input type="hidden" name="actor-0-useCase" id="id_actor-0-useCase" /></td></tr>
Run Code Online (Sandbox Code Playgroud)

在上面的第二行中,您可以看到 - (隐藏字段 id) 该字段是必填字段。

我相信这是导致内联无法保存的原因,但我不知道如何修复它。

这是 models.py

class Profile(models.Model):
    profileName = models.CharField(max_length=50)
    profileBoundary = models.CharField(max_length=3, choices …
Run Code Online (Sandbox Code Playgroud)

django class django-views inline-formset

9
推荐指数
1
解决办法
5840
查看次数