标签: foreign-key-relationship

Django:使 ModelChoiceField 在运行时评估查询集

我已经覆盖了模型的默认管理器,以便根据登录的用户(一种特定于对象的权限)仅显示允许的项目:

class User_manager(models.Manager):
    def get_query_set(self):
        """ Filter results according to logged user """
        #Compose a filter dictionary with current user (stored in a middleware method)
        user_filter = middleware.get_user_filter() 
        return super(User_manager, self).get_query_set().filter(**user_filter)

class Foo(models.Model):
    objects = User_manager()
    ...
Run Code Online (Sandbox Code Playgroud)

这样,每当我使用 时Foo.objects,都会检索当前用户,并将过滤器应用于默认查询集,以便仅显示允许的记录。

然后,我有一个带有 Foo 的外键的模型:

class Bar(models.Model):
    foo = models.ForeignKey(Foo)

class BarForm(form.ModelForm):
    class Meta:
        model = Bar
Run Code Online (Sandbox Code Playgroud)

当我编写 BarForm 时,我期望只看到过滤器 Foo 实例,但未应用过滤器。我认为这是因为查询集是在 Django 启动时评估和缓存的,当时没有用户记录并且没有应用过滤器。

有没有一种方法可以让 Django 在运行时评估 ModelChoice 查询集,而不必在表单定义中明确说明?(尽管存在所有性能问题......)

编辑 我找到了查询集的评估位置(django\db\models\fields\lated.py: 887):

def formfield(self, **kwargs):
    db = kwargs.pop('using', None)
    defaults = …
Run Code Online (Sandbox Code Playgroud)

django memcached foreign-key-relationship django-queryset

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

MySQL:如何更改具有外键约束的字段?

我有两个通过外键约束链接的表。我想更改 ID 字段,但由于外键约束,以下代码失败:

UPDATE A SET id = 1479 WHERE id = 2103;
UPDATE B SET Aid = 1479 WHERE Aid = 2103;
Run Code Online (Sandbox Code Playgroud)

我知道我可以设置ON CASCADE自动执行此操作,但是如何根据具体情况执行此操作?

mysql foreign-keys foreign-key-relationship

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

共享相同外键的两个或多个表可以共享该外键的约束吗?

这段代码有什么问题??它给出错误“名称已被另一个约束使用”。另外,如果我无法在不同的表中定义相同的约束,那么有什么方法可以重用以前定义的约束?

有什么见解吗??

CREATE TABLE tbl_formats
(
  format_id NUMBER(5),
  format_name VARCHAR2(50),
  format_desc VARCHAR2(100),
  valid_from DATE,
  valid_to DATE,
  format_type VARCHAR2(50),
  CONSTRAINT pk_format_id PRIMARY KEY(format_id)
);


CREATE TABLE tbl_format_detail
(
  id NUMBER(10),
  format_id NUMBER(5),
  src_field VARCHAR2(200),
  target_field VARCHAR2(100),
  business_rule VARCHAR2(4000),
  expression VARCHAR2(4000),
  target_segment VARCHAR2(4),

  CONSTRAINT pk_id PRIMARY KEY(id),
  CONSTRAINT fk_format_id FOREIGN KEY(format_id) REFERENCES tbl_formats(format_id)
);

CREATE TABLE tbl_client_formats 
(
  client_format_id NUMBER(10),
  format_id NUMBER(5),
  client_id NUMBER(5),
  CONSTRAINT pk_client_format_id PRIMARY KEY(client_format_id),
  CONSTRAINT fk_format_id FOREIGN KEY(format_id) REFERENCES tbl_formats(format_id),
  CONSTRAINT fk_client_id FOREIGN KEY(client_id) REFERENCES tbl_clients(client_id)
);
Run Code Online (Sandbox Code Playgroud)

表“tbl_client_formats”中定义的外键约束“fk_format_id”似乎与表“tbl_format_detail”中已定义的相同约束冲突。我是 …

oracle foreign-key-relationship

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

Kendo UI Web Grid - Popup_Editor 模板 - 下拉菜单

我使用的是 Kendo UI Web Grid,而不是服务器包装器之一。我只在网格中显示几个字段。其余字段显示在创建或编辑弹出窗口中。对于这个弹出窗口,我使用了一个模板:

<script id="popup_editor" type="text/x-kendo-template">
    <div class="k-edit-label">
        <label for="Title">Title</label>
    </div>
    <div class="k-edit-field">
        <input type="text" class="k-input k-textbox" name="Title" data-bind="value:Title" required>
    </div>

</script>
Run Code Online (Sandbox Code Playgroud)

然后我从网格中调用它:

        editable: {
            mode: "popup",
            template: $("#popup_editor").html(),
            confirmation: "Are you sure?"
        }
Run Code Online (Sandbox Code Playgroud)

这对输入框很有用。但是我的表中有一个外键列。我想在下拉列表中显示外键表中的所有选项,并根据表中的值选择正确的选项。我已经搜索了很多,但无法找到答案。

任何帮助将不胜感激。

javascript jquery html-select foreign-key-relationship kendo-grid

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

MYSQL:如何内联声明外键?

我知道可以将主键内联声明为

CREATE TABLE `my_table` (
    `id` INTEGER PRIMARY KEY
);
Run Code Online (Sandbox Code Playgroud)

我怀疑是否可以以相同的方式声明外键,例如

CREATE TABLE `my_table` (
   `foreign_id` INTEGER FOREIGN KEY `other_table` (`other_table_id`)
);
Run Code Online (Sandbox Code Playgroud)

mysql foreign-key-relationship

3
推荐指数
2
解决办法
1809
查看次数

Django 外键的模型字段未正确更新

所以我在尝试更新外键模型的字段时遇到了麻烦。我正在尝试通过另一个模型的方法更新该字段,但它似乎无法正常工作,因为我在运行我的 tests.py 时得到了不正确的值。我正在尝试更新“total_purchased”的值。这是我基本上想要完成的一个例子:

我正在使用 Django 1.6.4

如果问题太长而无法总结,是否允许使用以下 2 行?我在 django 类模型方法中执行此操作:

Ex: Model.ForeignKeyModel.field = some_value
    Model.ForeignKeyModel.save()
Run Code Online (Sandbox Code Playgroud)

有以下3种型号:

class Meal (models.Model):
    name = models.CharField(max_length=255)
    total_purchased = models.IntegerField(default=0, validators=[MaxValueValidator(capacity)])
    capacity = models.IntegerField(default=500)

class Item (models.Model):
    cart = models.ForeignKey(Cart)
    meal = models.ForeignKey(Meal)
    quantity = models.IntegerField(validators=[MinValueValidator(0)], default=0)

class Cart (models.Model):
    delivery = models.ForeignKey(DeliveryInfo)
    subscription = models.BooleanField(default=False)
    customer = models.ForeignKey(User)

    def add(self, meal, quantity):
        """ Dual Add/Remove from cart method, (quantity replaces current quantity) """
        item = Item.objects.get_or_create(cart=self, meal=meal)[0]
        remaining_capacity = item.meal.capacity - item.meal.total_purchased

        # …
Run Code Online (Sandbox Code Playgroud)

python django django-models foreign-key-relationship cart

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

在MySql中禁用插入操作中的外键检查

我有一个表,用于映射其他两个表的两个主键。我将这两个字段作为外键。映射表没有主键 当我尝试插入两个表中已有的 2 个值时,出现Cannot add or update a child row: aforeign key constraintfail错误。我该如何解决这个问题?

我的表是这样的:

CREATE TABLE IF NOT EXISTS fuse_package_component_members    
( component_id int(11) NOT NULL, 
     member_type int(11) NOT NULL, 
     member_id int(11) NOT NULL, 
     active_date date NOT NULL, 
     inactive_date date NOT NULL, 
     KEY component_id (component_id), 
     KEY member_id (member_id) ) 
   ENGINE=InnoDB DEFAULT CHARSET=latin1

ALTER TABLE fuse_package_component_members 
ADD CONSTRAINT comp_id_fk 
FOREIGN KEY (component_id) REFERENCES fuse_component_definition (component_id) ON UPDATE NO ACTION, 
ADD CONSTRAINT ele_id_fk 
FOREIGN KEY (member_id) REFERENCES fuse_product_element …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys foreign-key-relationship

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

抽象模型类和多个驱动类中的DjangoForeignKey导致名称冲突

我定义了一个抽象类,它有一个ForeignKey. 我有多个派生模型类,但是当我尝试生成架构迁移脚本时,south 向我显示错误。

class BlogEntryBase(models.Model):
    author = models.CharField(null=True, blank=True, max_length=100)
    title = models.CharField(null=True, blank=True, max_length=255)
    created_by = models.ForeignKey("main.UserProfile", verbose_name="Created By", related_name="%(class)s_set", blank=False, null=False)

class CatBlogEntry(BlogEntryBase):
    pass

class DogBlogEntry(BlogEntryBase):
    pass
Run Code Online (Sandbox Code Playgroud)

错误信息:

animal.catblogentry: Accessor for field 'created_by' clashes with related field 'UserProfile.catblogentry_set'. Add a related_name argument to the definition for 'created_by'.
animal.catblogentry: Reverse query name for field 'created_by' clashes with related field 'UserProfile.catblogentry_set'. Add a related_name argument to the definition for 'created_by'.
animal.dogblogentry: Accessor for field 'created_by' clashes with related …
Run Code Online (Sandbox Code Playgroud)

python django abstract-class foreign-key-relationship django-south

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

实体框架父 -&gt; 子链接和外键约束失败错误

我正在使用实体框架 7(核心)和 Sqlite 数据库。当前使用comboBox通过此方法更改实体类别:

/// <summary>
/// Changes the given device gategory.
/// </summary>
/// <param name="device"></param>
/// <param name="category"></param>
public bool ChangeCategory(Device device, Category category)
{
    if (device != null && category != null )
    {
        try
        {
            var selectedCategory = FxContext.Categories.SingleOrDefault(s => s.Name == category.Name);
            if (selectedCategory == null) return false;
            if (device.Category1 == selectedCategory) return true;

            device.Category1 = selectedCategory;
            device.Category = selectedCategory.Name;
            device.TimeCreated = DateTime.Now;
            return true;
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException("Category change for …
Run Code Online (Sandbox Code Playgroud)

c# sqlite foreign-key-relationship entity-framework-core

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

将外键约束添加到现有列

我有一个数据库,经过几年来从几个不同编码人员的输入经历了一些重大转变.某些表包含通过引用列对其他数据的引用,但没有外键约束.这意味着有些表可能包含死链接.

我想将外键约束添加到所有引用列.如果某些数据可能引用死链接而其他数据实际上可能为空,我怎样才能确保成功.

我想我需要这样说:

ALTER TABLE dbo.Users ADD CONSTRAINT FK_Users_Persons FOREIGN KEY
(
    Person_ID --In some cases Person_ID will be null
) REFERENCES dbo.People
(
    Person_ID
) ON UPDATE  NO ACTION 
ON DELETE  NO ACTION 
NOT FOR REPLICATION

GO
ALTER TABLE dbo.Users
    NOCHECK CONSTRAINT FK_Users_Persons
GO
COMMIT
Run Code Online (Sandbox Code Playgroud)

如果这是准确的,如果有任何隐藏的陷阱,请告诉我?

提前致谢

t-sql sql-server foreign-keys foreign-key-relationship

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