我正在尝试使用启用了Flexbox的Bootstrap 4构建以下卡布局.图片取自我当前的实现,它的工作方式与预期的一样.
HTML结构如下:
<section>
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-block">
<h4 class="card-title">Curabitur gravida vestibulum imperdiet.</h4>
<p class="card-text">Cras convallis ut turpis vitae facilisis. Morbi eu augue vel quam efficitur rhoncus vitae eget lectus. Cras augue ligula, aliquam ut enim ut, feugiat imperdiet sem. Integer sed mi quis nisl eleifend interdum.</p>
<p class="card-text">Cras convallis ut turpis vitae facilisis. Morbi eu augue vel quam efficitur rhoncus vitae eget lectus. Cras augue ligula, aliquam ut enim ut, feugiat imperdiet sem.</p> …
Run Code Online (Sandbox Code Playgroud) 假设我有一个简单的模型:
class Contact(models.Model):
owner = models.ForeignKey(User, editable=False)
first_name = models.CharField(max_length=255,)
last_name = models.CharField(max_length=255,)
email = models.EmailField()
Run Code Online (Sandbox Code Playgroud)
我想在创建对象时自动为其设置所有者(request.user,登录用户)。我搜索了很多不同的选项,但其中大多数都与您在管理方面的操作方式有关,而其他选项对我不起作用。我试过这个例如http://blog.jvc26.org/2011/07/09/django-automatically-populate-request-user然后我尝试了很多方法来覆盖保存方法或某种 pre_save 信号的东西。似乎没什么用,我只是收到一个错误
IntegrityError at /new
null value in column "owner_id" violates not-null constraint
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?我知道这是一个简单的想法,但我只是找不到方法。
...编辑...我的创建视图如下所示:
class CreateContactView(LoginRequiredMixin, ContactOwnerMixin, CreateWithInlinesView):
model = models.Contact
template_name = 'contacts/edit_contact.html'
form_class = forms.ContactForm
inlines = [forms.ContactAddressFormSet]
def form_valid(self, form):
obj = form.save(commit=False)
obj.owner = self.request.user
obj.save()
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
return reverse('contacts-list')
def get_context_data(self, **kwargs):
context = super(CreateContactView, self).get_context_data(**kwargs)
context['action'] = reverse('contacts-new')
return context
Run Code Online (Sandbox Code Playgroud)
到目前为止,这只是我尝试解决该问题的一种方法。我从http://blog.jvc26.org/2011/07/09/django-automatically-populate-request-user …
我正在使用Bootstrap 4,我想更改按钮悬停和活动状态的默认样式.那些不能用变量改变,因为它们在Sass mixins中是硬编码的.例如:
@mixin button-variant($color, $background, $border) {
$active-background: darken($background, 10%);
$active-border: darken($border, 12%);
...
Run Code Online (Sandbox Code Playgroud)
为了获得我想要的风格,我需要改变变暗以减轻然后改变百分比.
我可以修改源代码但它听起来不是一个很好的维护解决方案.我也可以使用Bootstrap后包含的自定义css文件覆盖这些值,但是我基本上需要从Bootstrap复制粘贴整个按钮源并对其进行修改.因为有很多按钮变体,所以在我可以包含对Bootstrap css的更改的情况下,将会有许多覆盖是不必要的.
最好的解决方案是在编译之前覆盖Bootstrap中的整个按钮变量mixin,以便在编译的Bootstrap文件中只有我想要的CSS.最好的方法是什么?
我想创建一个类似于下面示例的数据库模型:
这个想法是用户(或任何模型)可以具有多个具有不同值的不同特征(或其他特征)。特征可以是任何内容,例如整数(工资)、日期(生日)或多项选择(C、Python 等能力)。为了保持数据库设计简单,我尝试了一种方法,其中只有一个功能表,该表通过选择表提供可选选择,而不是为每种功能类型设置单独的数据库表。用户对特征值的选择存储到 User_has_Feature 表的“value”字段中,该字段是一个 CharField,可以存储多种不同的数据类型,如整数、日期、选择、多项选择等。
我的问题是,如何验证所有数据,以便它根据字段数据类型进行验证,并在管理或 UI 中正确显示所有内容(针对不同类型具有不同的 UI 小部件)?
我尝试了一种方法,将每个功能的字段类型存储到字段表中,可以是 CharField、IntegerField、DateField 等。然后在 User_has_Feature 模型 clean() 中,我可以动态验证字段类型,例如:
FIELDS = {
'DateField': DateField,
'IntegerField': IntegerField,
etc.
}
def clean(self):
class_ = FIELDS.get(self.feature.field)
if class_ in [DateField, IntegerField, ...]:
field = class_()
field.clean(self.value)
elif class_ in [ModelChoiceField, ModelMultipleChoiceField]:
etc.
Run Code Online (Sandbox Code Playgroud)
这种方法对于验证来说效果很好,但它对管理小部件没有帮助,而且数据总是作为字符串处理,而不是整数、日期、列表等。所以我开始研究创建自定义 ValueField 模型的选项field,它继承 CharField,并将所有数据作为字符串存储到数据库中,但会动态更改值的小部件和数据类型 (to_python)。到目前为止还没有成功,我尝试的一切似乎都过于复杂。
对我来说,这似乎是相当普遍的需求,因此我希望已经存在一些“简单”的解决方案。或者然后我需要尝试完全不同的数据库设计方法。
我正在尝试使用CreateView跟踪创建对象的用户,我的工作方式与在文档中完成的操作完全相同(https://docs.djangoproject.com/en/dev/topics/class-based-views/ generic-editing /,Models和request.user)除了我不使用login_required()装饰器而是使用来自django-braces的LoginRequiredMixin.
我的模特:
class Contact(models.Model):
owner = models.ForeignKey(User, editable=False)
first_name = models.CharField(max_length=255,)
last_name = models.CharField(max_length=255,)
email = models.EmailField()
Run Code Online (Sandbox Code Playgroud)
我的看法:
class CreateContactView(LoginRequiredMixin, ContactOwnerMixin, CreateWithInlinesView):
model = models.Contact
template_name = 'contacts/edit_contact.html'
form_class = forms.ContactForm
inlines = [forms.ContactAddressFormSet]
def form_valid(self, form):
form.instance.owner = self.request.user
return super(CreateContactView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个新对象时,我收到一个错误:
IntegrityError at /new
null value in column "owner_id" violates not-null constraint
DETAIL: Failing row contains (3, null, John, Smith, john.smith@gmail.com).
Run Code Online (Sandbox Code Playgroud)
为什么会出现此错误?我唯一想做的就是在创建对象时自动添加到对象.
...编辑...
我注意到这个问题与CreateWithInlinesView
django extra-views有关.当我改变我的观点以使用django的泛型时,CreateView
一切都可以正常运行.所以现在基本上问题是为什么这个解决方案无法使用CreateWithInlinesView
?
django django-models django-generic-views django-class-based-views
我成功安装了捆绑包
gem install bundler
Run Code Online (Sandbox Code Playgroud)
然后我尝试做
bundle install
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rbreadline.rb:1097:in `<module:RbReadline>': HOME environment variable (or HOMEDRIVE and HOMEPATH) must be set and point to a directory (RuntimeError)
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rbreadline.rb:17:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/readline.rb:10:in `<module:Readline>'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/readline.rb:8:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb:2:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/line_editor.rb:2:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/base.rb:8:in `<top (required)>'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from …
Run Code Online (Sandbox Code Playgroud) 假设我有以下模型,其中有一个方法variants():
class Example(models.Model):
text = models.CharField(max_length=255)
def variants(self):
return Example.objects.filter(text=remove('xy', self.text))
Run Code Online (Sandbox Code Playgroud)
这个想法是在从文本中删除某些字符后获取文本相同的所有对象。例如,如果 self.text 是“axxyy”,则它应该与具有文本“a”的对象匹配。函数remove()不接触数据库,它返回一个删除了给定字符的新字符串。这很好用。
但是,我需要在比较的两侧执行相同的操作,以便变量()的行为如下:
def variants(self):
return Example.objects.filter(remove('xy', text)=remove('xy', self.text))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果 self.txt 是 'axxyy' 它应该与 'a'、'ax、'axx'、'xayy' 等匹配,但不应该与 'aa' 匹配,因为 'a' ! = 删除后的“aa”。再说一次,我不想从数据库中删除“xy”,只是为了进行比较。
我可以用 Python 来做到这一点,但我想知道是否有办法在数据库级别上做到这一点?我一直在阅读有关 Func() 表达式的文档,例如 Replace,但尚未找到解决方案。
我有以下表结构:
--- c1 ------- c2 ---- c3 ------ c4
r1: **0001** **word1**
r2: 0002 word2 **0001** **word1**
r3: 0003 word3 0002 word2
Run Code Online (Sandbox Code Playgroud)
我想自动设置第三列的值,这样如果第四列中有某个单词,那么程序应该检查第二列并尝试找到相同的单词。如果找到,则应将第 1 列值用作第 3 列值。
我可以手动执行此操作,但需要更多工作,并且如果我添加新行,就会出现问题。第 1 列值等于行号,因此如果添加新行,它会自动更新。现在我想设置我的数据,以便在这些情况下第 3 列也会自动更新。
实现这一目标的正确公式是什么?
django ×4
bootstrap-4 ×1
bundler ×1
css ×1
django-admin ×1
excel ×1
filtering ×1
html ×1
mixins ×1
postgresql ×1
rubygems ×1
sass ×1
windows ×1