Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Application opening statement character limit #2075

Merged
merged 1 commit into from
Jan 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions apps/application/migrations/0025_alter_application_prologue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.18 on 2025-01-22 09:53

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('application', '0024_applicationaccesstoken_language'),
]

operations = [
migrations.AlterField(
model_name='application',
name='prologue',
field=models.CharField(default='', max_length=40960, verbose_name='开场白'),
),
]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code appears to be correct based on the given information. There are no apparent issues or irregularities. However, some notes:

  1. The default='', max_length=40960 is quite conservative for text fields like '开场白'. In modern databases, consider using larger data types if necessary.

  2. The migration file was generated with Django 4.2.18, which may not support current best practices without modification.

  3. For better security and maintainability, it would be beneficial to add a unique constraint to prevent duplicate entries, but this cannot be done directly within an existing column alteration operation due to database constraints limitations.

Overall, while functional, there's room for improvement depending on specific project requirements and future development plans.

2 changes: 1 addition & 1 deletion apps/application/models/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class Application(AppModelMixin):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id")
name = models.CharField(max_length=128, verbose_name="应用名称")
desc = models.CharField(max_length=512, verbose_name="引用描述", default="")
prologue = models.CharField(max_length=4096, verbose_name="开场白", default="")
prologue = models.CharField(max_length=40960, verbose_name="开场白", default="")
dialogue_number = models.IntegerField(default=0, verbose_name="会话数量")
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
model = models.ForeignKey(Model, on_delete=models.SET_NULL, db_constraint=False, blank=True, null=True)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current code does not contain any immediate irregularities or significant issues. However, there is one suggestion for improvement:

# Suggested Optimization: Use CharField over TextField for short text inputs

Explanation:

  • In Django ORM, CharField and TextField are used to store string data with varying lengths.
  • For "开场白" which appears primarily as a description or opening statement rather than storing extensive blocks of text, using CharField can be more efficient in terms of storage space and performance compared to TextField.

If you decide to implement this change, update the field type from models.CharField to models.TextField in lines where it says prologue.

Expand Down
Loading