小编akm*_*akm的帖子

在 Django 中,两个不同应用程序的模型可以相互依赖吗?

我正在从头开始开发一个计费和会计应用程序,其中我创建了两个不同的应用程序:

  1. 计费:这个应用程序存储了所有与计费相关的逻辑,例如;订阅计划、产品、优惠券和类似的东西。
  2. 帐户:此应用程序保留会计数据,例如:客户帐户、交易等。

现在我有一个问题,我需要在以下情况下将它们联系起来:

  1. 客户订阅的计划(在计费应用程序中)(在帐户应用程序中)
  2. 客户购买的产品(在计费应用程序中)(在帐户应用程序中)
  3. 客户(在帐户应用程序中)发票(在计费应用程序中)
  4. 客户应用/兑换的优惠券(在计费应用程序中)(在计费应用程序中)

我曾尝试在这些应用程序的模型中使用外键,但它看起来非常粗糙和糟糕。

我不确定我是否应该将所有模型放在相同的位置;我希望有见地的人对我的设计进行审查,以便我知道有哪些更好的方法可以做到这一点。

django django-models django-apps

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

如何编写自我替换/更新二进制文件?

我正在尝试编写一个可以查找URL的C程序,并且可以使用它的新版本,它应该能够更新自己.

我试过的方法:

  1. forkout一个新的进程下载新的二进制文件说BINARY.tmp,我用来forkout的代码是:

    int
    forkout_cmd(char *cmdstr) {
      pid_t pid;
      char *cmd[4];
    
      cmd[0] = "/bin/bash";
      cmd[1] = "-c";
      cmd[2] = cmdstr;
      cmd[3] = NULL;
    
      pid = vfork();
      if( pid == -1 ) {
        logmsg("Forking for upgradation failed.");
        return -1;
      }else if( pid == 0 ){
        /* we are in child process */
        execvp(cmd[0], cmd);
        logmsg("execl failed while executing upgradation job.");
      }else{
        /* need not to wait for the child to complete. */
        wait(NULL);
      }
        return 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 新进程尝试覆盖原始BINARY

    例如,您可能会考虑分叉的例程:

    forkout_cmd("wget -O …
    Run Code Online (Sandbox Code Playgroud)

c c++ linux

4
推荐指数
2
解决办法
996
查看次数

如何在django中的字段上进行数据库分区?

我有多个字段的django模型,它被映射到MySQL数据库,现在模型中有一个日期时间字段,我想在其中设置分区.

该模型如下所示:

class Packet(models.Model):
    device = models.ForeignKey(Device)
    packet_time = models.DateTimeField(default=timezone.now())
    # Location Details
    signal = models.CharField(max_length=2, default='A')
    lat = models.FloatField(default=None, null=True)
    lat_indicator = models.CharField(max_length=1, default='')
    lng = models.FloatField(default=None, null=True)
    lng_indicator = models.CharField(max_length=1, default='')
    address = models.CharField(max_length=64, default='NA')
    speed = models.FloatField(default=None, null=True)
    orientation = models.FloatField(default=None, null=True)
    #House Keeping Items
    dor = models.DateTimeField(default=timezone.now()) # <= Want to partition this for weekly basis. 
    dirty = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

请告诉我如何实现这一目标.

mysql django django-models

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

仅列出 OneToOneField Django 中可用的值

我只想列出 OneToOneField 中可用的项目,而不是所有项目,它不像在 ChoiceField 中过滤值,因为我们需要找出可以使用的值,这是基于是否已使用的原则。

我的模型定义如下:

class Foo(models.Model):
    somefield = models.CharField(max_length=12)

class Bar(models.Model):
    somefield = models.CharField(max_length=12)
    foo = models.OneToOneField(Foo)
Run Code Online (Sandbox Code Playgroud)

现在我使用 ModelForm 创建基于 Bar 模型的表单,如下所示:

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

现在问题在于它使用 HTML 的选择小部件在 ChoiceField 中显示数据库中可用的所有 Foo 对象的列表,因为该字段是 OneToOneField django 将强制将 Bar 对象与 Foo 对象进行单一关联,但因为它显示列表中的所有可用和不可用项目很难找出表单中可接受的值,并且用户被迫使用点击/试用方法来找出正确的选项。

如何更改此行为并仅列出字段中可以使用的项目?

django django-models django-forms

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

标签 统计

django ×3

django-models ×3

c ×1

c++ ×1

django-apps ×1

django-forms ×1

linux ×1

mysql ×1