我有两个应用程序: Ads Domains
广告可以通过多对多与域关联。在我的广告模型中,我放置了:
domains = models.ManyToManyField(Domain)
Run Code Online (Sandbox Code Playgroud)
我该如何使其使用域名应用程序而不是广告应用程序?
谢谢
我正在开始新项目,但不知道从哪里开始。我需要数据库设计,其中有类别和 4 级子类别,但产品可以有多个类别。所以我很困惑我的数据库应该如何。请帮助我。非常感谢您提前给我时间。
我当前的表设置用于“单词”和“短语”之间的多对多关联:
association_table_wp = Table('words_phras', Base.metadata,
autoload=True,
extend_existing=True)
class Phrase(Base):
__tablename__ = 'phrases'
__table_args__ = {'autoload': True}
def __init__(self, phrase, explanation=None, active=False):
self.phrase = phrase
self.explanation = explanation
self.active = active
class Word(Base):
__tablename__ = 'words'
__table_args__ = {'autoload': True}
def __init__(self, word, word_id=None, active=False):
self.word = word
self.word_id = word_id
self.active = active
Word.phrases = relationship(Phrase,
secondary=association_table_wp,
backref="words")
Run Code Online (Sandbox Code Playgroud)
现在通常当我想查找一些单词及其短语时我使用:
words = db_session.query(Word).filter(Word.id.in_(word_ids)).\
options(joinedload(Word.phrases)).\
all()
Run Code Online (Sandbox Code Playgroud)
这允许我访问words[i].phrases与给定单词相关的短语。
现在,这工作正常,但请注意“active”属性。我想过滤单词的短语,以便只active == True返回带有 的短语。如何才能做到这一点?我尝试了几种连接和 eager_loading 的组合,但没有一个像我希望的那样工作。
非常感谢。
伙计们,我正在尝试为我的公司制作一个简单的票证生成系统,作为一个帮助。现在,我的 MSSQL 数据库中有一个名为 的表tblTicket和另一个名为 的表。tblEngineer
我的应用程序采用 C# Windows 窗体,因此在新的票证生成窗体上,我有许多文本框和一个用于分配工程师的组合框,该工程师由tblEngineer. 生成票证后,在此表单中输入的所有信息都将存储在fromtblTicket中。EngineerIDtblEngineer
它运行得很好,但后来我的客户要求我添加选项,以便可以在一张票上分配 3 名工程师。
将来,我将不得不开发一个“工程师模块”,其中工程师将只能看到分配给他的票证。它将包括用于身份验证目的的登录系统。因此,如果生成了一个新票证并分配给 3 名工程师,则只有 3 名工程师应该能够看到该票证,而其他人则看不到。
我应该如何采用这种方法?如果只有一名工程师,这真的很容易。现在我需要制作一个多对多表,比如tblAssignedEng包含工单 ID 和多个工程师 ID 的表吗?作为外键引用?我对 SQL 没有太多经验,所以我在这里有点挣扎,任何帮助将不胜感激。
好吧,我看到了一些关于此的帖子,但我根本不理解附加的概念,我有三个表:
Llistes(列表):
$table->increments('id');
$table->string('nom_llista');
$table->integer('user_id')->unsigned();
});
Run Code Online (Sandbox Code Playgroud)
康康斯(歌曲):
$table->increments('id');
$table->string('titol');
$table->integer('genere_id')->unsigned();
$table->integer('artista_id')->unsigned();
$table->integer('album_id')->unsigned();
Run Code Online (Sandbox Code Playgroud)
数据透视表:llistes_cancons ( lists_songs):
$table->increments('id');
$table->integer('id_canco')->unsigned();
$table->integer('id_llista')->unsigned();
$table->timestamps();
Run Code Online (Sandbox Code Playgroud)
我还有另外两个课程,我认为这是正确的,但我不确定:
在 Canco.php ( Song.php ) 中:
public function llistescancons_llistes()
{
return $this->belongsToMany('App\Llista');
}
Run Code Online (Sandbox Code Playgroud)
在 Llista.php ( List.php ) 中:
public function llistescancons_cancons()
{
return $this->belongsToMany('App\Canco');
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是我如何在我的控制器中实现一个功能,让我可以将新记录添加到数据透视表(多对多),并且如果可能有另一个功能来显示记录,我是 Laravel 的新手,这有点对我来说很难。
好的,所以我遵循了实体框架核心的“多对多”示例: 关系(在页面末尾)。
似乎在最初创建数据库时(createNew 设置为 true)一切都按预期工作,但是当我使用现有数据库(createNew 设置为 false)时,连接不再存在。以下是一个控制台应用程序,显示了我遇到的问题:
createNew = true 的输出:
作者 1 写道: - 第 1 册 - 第 2 册
作者 2 写道: - 第 1 册 - 第 2 册
作者 3 写道: - 第 4 册
作者 4 已写:还没有书
createNew = false 的输出:
作者 1 已写:还没有书
作者 2 已写:还没有书
作者 3 已写:还没有书
作者 4 已写:还没有书
// Visual Studio 2017
// Console App (.NET Core)
// Nuget: Microsoft.EntityFrameworkCore.SqlServer
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore; …Run Code Online (Sandbox Code Playgroud) 我坚持使用flask和flask-sqlalchemy从MySQL db中删除多对多记录。似乎 sqlalchemy 试图从关系表中删除所有行,其中 a 的 id 与链接到 b 的 id 相同。
错误(示例):
sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'ksiazka_autor' expected to delete 1 row(s); Only 0 were matched.
Run Code Online (Sandbox Code Playgroud)
或者
sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'ksiazka_wydawnictwo' expected to delete 552 row(s); Only 551 were matched.
INFO sqlalchemy.engine.base.Engine DELETE FROM ksiazka_kategoria WHERE ksiazka_kategoria.ksiazka_id = %s AND ksiazka_kategoria.kategoria_id = %s
2017-08-29 15:44:34,965 INFO sqlalchemy.engine.base.Engine ((166, 40), (167, 40), (168, 40), (169, 40), (170, 40), (171, 40), (172, 40), (173, 40) ... displaying 10 …Run Code Online (Sandbox Code Playgroud) 我的数据库中的两个表之间存在多对多关系(1 篇文章有超过 1 篇好书,反之亦然),所以我制作了一个链接表(bestelregel)。
但现在我想制作一个表格,以便我可以添加包含多个产品的新订单,但由于我对此不熟悉,所以我不知道该怎么做。我尝试为实体 Bestelling 制作一个表格,以便我可以下新订单。并尝试使用另一种表单(基于链接表的表单)将产品添加到订单中,但我收到以下错误:
关联字段“AppBundle\Entity\Bestelregel#$bestelordernummer”的类型“AppBundle\Entity\Artikel”的预期值,改为“AppBundle\Entity\Bestelling”。
我希望你们能帮助我。也许用另一种方式?
我的代码:
实体文章
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\Common\Collections\ArrayCollection;
/**
* Artikel
*
* @ORM\Table(name="artikel")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ArtikelRepository")
*/
class Artikel
{
//Mapping naar de database
/**
* @var string
*
* @ORM\Column(name="artikelnummer", type="integer", length=20, unique=true)
* @ORM\Id
* @Assert\Length(
* min = 10,
* max = 10,
* minMessage = "Minimaal 10 karakters",
* maxMessage = "Maximaal 10 karakters"
*)
*/ …Run Code Online (Sandbox Code Playgroud) 我想使用部分更新来更新模型的多对多字段。但是我收到错误
<django.db.models.fields.related.ManyToManyField: skills> (only non-relations and foreign keys permitted).
Run Code Online (Sandbox Code Playgroud)
这就是我的模型目前的样子
class modelJob(models.Model):
skills = models.ManyToManyField(modelSkill,blank=True)
title = models.CharField(max_length=200, unique=False,blank=False,null=True)
moreInfo = models.CharField(max_length=500, unique=False,blank=False,null=True)
Run Code Online (Sandbox Code Playgroud)
这就是我的序列化器的样子
class Serializer_PartialUpdateJob_RX(serializers.ModelSerializer):
class Meta:
model = modelJob
fields = '__all__'
def update(self, instance, validated_data):
modelJob.objects.filter(pk=instance.id).update(**validated_data)
job = modelJob.objects.get(pk=instance.id)
return job
Run Code Online (Sandbox Code Playgroud)
这就是我的看法
class PartialUpdate_Jobs(GenericAPIView, UpdateModelMixin):
queryset = modelJob.objects.all()
serializer_class = Serializer_PartialUpdateJob_RX
lookup_field = 'id'
def put(self, request, *args, **kwargs):
result = self.partial_update(request, *args, **kwargs)
return Response(Serializer_Job_TX(self.queryset[0]).data)
Run Code Online (Sandbox Code Playgroud)
现在我只想更新多对多字段(技能),这就是我的 json 的样子
{
"skills" :[
2,4
]
}
Run Code Online (Sandbox Code Playgroud)
其中 2 …
django 中是否有任何方法可以通过查询集或 ids 列表过滤具有多对多关系的对象。在多对多中获取具有完全相同值的查询。模型
class Parent(models.Model):
name = models.CharField(max_length=1000)
children = models.ManyToManyField(Child, blank=True)
Run Code Online (Sandbox Code Playgroud)
意见
def filter_parents(request):
children = Child.objects.filter(id__in=[1,2,3])
parents = Parent.objects.filter(child=child)
return parents
Run Code Online (Sandbox Code Playgroud)
预期:我正在寻找在多对多领域拥有完全相同孩子的过滤父母
many-to-many ×10
django ×2
python ×2
sqlalchemy ×2
attachment ×1
c# ×1
categories ×1
eloquent ×1
filter ×1
flask ×1
forms ×1
hierarchy ×1
laravel-5 ×1
php ×1
record ×1
sql ×1
symfony ×1