小编Jer*_*iah的帖子

在ForeignKey中设置CreateView的初始值(非self.request.user)

我试图在基于类的视图CreateView中访问ForeignKeys.我希望能够从ForeignKeys动态设置CBV中的初始值,并动态设置来自ForeignKeys的模板链接.

这两个问题(1.初始值,2.模板链接)可以用类似的方法解决,也可以用不同的方法解决......我还在学习.也许第一个问题可以在内部解决views.py,第二个问题可以用模板语法解决ingredient_form.html吗?

我已经看到有关SO设置来自users(self.request.user)的初始值的问题,而不仅仅是来自普通外键的问题models.py.

我正在经历django-by-errors,并试图添加额外的功能来扩展我的django知识.

我的问题特别集中在views.py:IngredientAddView(CreateView)ingredient_form.html,并在urls.py:'recipe-detail''ingredient-add".

当我查看时'recipe-detail',我可以点击链接'ingredient-add'.我想'ingredient-add'"知道"哪个食谱点击它,并且能够将此食谱设置为初始值(我的尝试views.py:IngredientAddView:get_initials(self)不起作用),并且还能够链接回这个食谱(我的尝试ingredient_form.html:{% comment %}不起作用) ).

非常感谢任何帮助.

models.py

class Food(models.Model):
    name=models.CharField(max_length=20,unique=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('food-detail',kwargs={'pk':self.pk})

class Recipe(models.Model):
    title=models.CharField(max_length=80,unique=True)
    slug=models.SlugField(max_length=80,unique=True)
    description=models.TextField(blank=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('recipe-detail',kwargs={'slug':self.slug})

class Ingredient(models.Model):
    recipe=models.ForeignKey(Recipe)
    food=models.ForeignKey(Food)

    def __str__(self):
        return '%s (%s)' % (self.food, self.recipe)
Run Code Online (Sandbox Code Playgroud)

views.py

class FoodListView(ListView):
    model=Food

class …
Run Code Online (Sandbox Code Playgroud)

django foreign-keys django-templates django-class-based-views

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

使用getline()而不设置failbit

是否可以getline()在没有设置的情况下读取有效文件failbit?我想使用,failbit以便在输入文件不可读时生成异常.

以下代码始终basic_ios::clear作为最后一行输出- 即使指定了有效输入.

test.cc:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main(int argc, char* argv[])
{
    ifstream inf;
    string line;

    inf.exceptions(ifstream::failbit);
    try {
        inf.open(argv[1]);
        while(getline(inf,line))
            cout << line << endl;
        inf.close();
    } catch(ifstream::failure e) {
        cout << e.what() << endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

input.txt中:

the first line
the second line
the last line
Run Code Online (Sandbox Code Playgroud)

结果:

$ ./a.out input.txt 
the first line
the second line
the last line
basic_ios::clear
Run Code Online (Sandbox Code Playgroud)

c++ file-io exception getline eof

8
推荐指数
1
解决办法
3135
查看次数

基于get_initial()的CBV CreateView限制ForeignKey

我有两个应用程序,familyperson.在Person课堂上,我想限制已经创建的对象的可用motherfather选择family.如果我能利用的family_pk设置我get_initial()person/views.py:PersonCreateview,并用它family_pk来限制的ForeignKey的选择motherfather那似乎是它可以成为一个伟大的方式来组合这些逻辑.这可能吗?

family/models.py

class Family(models.Model):
    lastname=models.CharField(max_length=100)

    def __str__(self):
        return self.lastname
Run Code Online (Sandbox Code Playgroud)

family.views.py

from django.views import generic
from django.core.urlresolvers import reverse

from .models import Family

class FamilyListView(generic.ListView):
    context_object_name='family_list'
    model=Family


class FamilyDetailView(generic.DetailView):
    context_object_name='family'
    model=Family
    pk_url_kwarg='family_pk'


class FamilyCreateView(generic.CreateView):
    model=Family

    def get_success_url(self,**kwargs):
        return reverse('family-detail',kwargs={'family_pk':self.object.pk})
Run Code Online (Sandbox Code Playgroud)

person/models.py

class Person(models.Model):
    fields=('family','firstname','mother','father')
    family=models.ForeignKey(Family)
    firstname=models.CharField(max_length=100)
    mother=models.ForeignKey('self',blank=True,null=True)
    father=models.ForeignKey('self',blank=True,null=True)

    def __str__(self):
        return self.firstname
Run Code Online (Sandbox Code Playgroud)

person/views.py

from django.views import generic
from …
Run Code Online (Sandbox Code Playgroud)

django foreign-keys django-queryset django-class-based-views

5
推荐指数
1
解决办法
1734
查看次数